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

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

от oleta , в категории: Вопросы от знатоков , 4 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

5 ответов

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

от rupert , 4 года назад

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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))
}


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

от oleta , 4 года назад

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

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

от jaclyn , 4 года назад

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

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

от rupert , 4 года назад

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


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package main

import "fmt"

func main() {

   s := "abcdefghijklmnopqrstuvwxyz"

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

}

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

1
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

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

от jaclyn , 4 года назад

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

1
s := "abcdefghijklmnopqrstuvwxyz"

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