Не могу на Golang найти как переводится byte to string

Пользователь

Помогите в переводе byte to string, что-то мало об этом информации в интернете. Буду безумно благодарен, за помощь в разгадке. 

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket
29 мая 2020 г., 10:44

Пользователь

Если вы имеете ввиду перевод на русский, то звучит это так ‘байт в строку’. Вообще если серьезно, то делается это так, как в примере:

package main

 

import "fmt"

 

var array = []byte{104, 0, 101, 0, 108, 0, 108, 0, 111, 0, 0, 0, 0, 0, 0, 0}

 

func main() {

               new_array := make([]byte, 0, len(array))

               for _, b := range array {

                              if b == 0 {

                                              continue

                              }

                              new_array = append(new_array, b)

               }

               // 5 - ожидаемая длинна

               fmt.Println(len(new_array))

               // строка без 0x00

               fmt.Println(string(new_array))

}

29 мая 2020 г., 11:11

Пользователь

rupert Спасибо большое, за помощь. Не ожидал, что так быстро дождусь ответа. Теперь буду продолжать свои познания в Goland. 

29 мая 2020 г., 11:26

Пользователь

Кстати, а где узнать раскладку байтов, чтоб можно было увидеть, какой номер равняется букве? Может есть пример кода, который автоматически выписывает эти действия?

29 мая 2020 г., 11:47

Пользователь

Да, это можно легко сделать, вот мой пример.


package main

 

import "fmt"

 

func main() {

      s := "abcdefghijklmnopqrstuvwxyz"

      fmt.Println("s:", []byte(s))

}


Выводит в ответе:

s: [97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122]

Можете изменять код, на свое усмотрение, даже в https://play.golang.org

29 мая 2020 г., 11:54

Пользователь

Ага, спасибо. Здесь, я так понимаю, нужно менять:

s := "abcdefghijklmnopqrstuvwxyz"

буквы в кавычках "". В итоге появляется их номер в выводимом ответе. Понятно!

29 мая 2020 г., 12:01