我将此代码编写为将TEXT
转换为BINARY
fmt.Printf("%s\n", fmt.Sprintf("%08b", "A"))
无效,请打印留言:%!b(string=0000000A)
但当我将"A"
更改为"A"[0]
时工作正常:
fmt.Printf("%s\n", fmt.Sprintf("%08b", "A"[0]))
输出为01000001
上述陈述之间有什么区别?
答案 0 :(得分:4)
Golang将字符串与字节区分开来。
"A"
是一个字符串,技术上a read-only slice of bytes。 "A"[0]
是此序列中的第一个字节,其值为0x41。
您要求首先使用二进制数字在八个字符的字段中打印一个字符串("A"
),然后再打印一个字节("A"[0]
)。你的第一个输出很有趣,因为你试图打印一个字符串,好像它是某种字节值。但是一个字节的序列与单个字节不同。你的第二个输出更自然,因为你抓住了字符串的第一个字节(在索引0处),获得了0x41。