2015-03-05 2 views

ответ

3

Вы можете использовать формат fmt.Printf() (example):

func main() { 
    a := []byte{0x61} 
    c := hex.Dump(a) 
    fmt.Printf("'%+v' -- '%s'\n", c, a) 
} 

Выход:

'00000000 61            |a| 
' -- 'a' 

Формат %s достаточно, чтобы преобразовать 0x61 в 'a '.

0

Если вы просто хотите строку, вы можете указать fmt.Sprintf.

package main 

import (
    "fmt" 
) 

func main() { 
    a := []byte{0x61} 
    c := fmt.Sprintf("%s", a) 
    fmt.Println(c) 
} 
1

Ваш вопрос немного вводит в заблуждение.

Основываясь на ваш вопрос, что вы действительно хотите преобразовать значение byte или (фрагмент байт) в []byte персонажу string или (что более или менее rune в Go).

Отныне я буду разделять единственный byte значения от []byte с использованием этих переменных:

b := byte(0x61) 
bs := []byte{b} 

Чтобы преобразовать его в string, вы можете просто использовать преобразование, которое является чистым и самым простым:

s := string(bs) 

Если вы хотите его как «символ», вы можете преобразовать его в rune:

r := rune(b) 

Другим решением является использование fmt.Printf() как упомянуто в VonC's answer и используя %s глагол, который:

%s the uninterpreted bytes of the string or slice 

Вы можете взглянуть на эти альтернативы:

%c the character represented by the corresponding Unicode code point 
%q a single-quoted character literal safely escaped with Go syntax. 

%q принимает одновременно byte, []byte и rune.

Смотрите этот Litte пример, чтобы продемонстрировать это (попробуйте на Go Playground):

b := byte(0x61) 
bs := []byte{b} 

fmt.Printf("%s\n", bs) 
fmt.Printf("%c\n", b) 
fmt.Println(string(bs)) 

fmt.Printf("%q\n", bs) 
fmt.Printf("%q\n", b) 
fmt.Printf("%q\n", rune(b)) 

Выход:

a 
a 
a 
"a" 
'a' 
'a' 

Если вам нужен результат как string, вы можете использовать fmt.Sprintf() вариант упомянутых в satran's answer примерно:

s := fmt.Sprintf("%s", bs) 

Но проще всего использовать преобразование string (string(bs)).

+0

Я взял на себя «вводящую в заблуждение» часть, но сначала попробовал простой ответ, ожидая, когда ОП выяснит. Твоя гораздо более полная. +1 – VonC

Смежные вопросы