将Go字符串转换为ASCII字节数组

73

我该如何将字符串编码为ASCII字节数组?

2个回答

118
如果您正在寻找转换,只需执行byteArray:= [] byte(myString) 语言规范详细说明了字符串与某些类型的数组之间的转换(字节用于字节,int用于Unicode点)

21
我认为cthmo06意识到这一点,但严格来说,这不是一个“ASCII”字节数组,更像是一个UTF-8字节数组。 如果字符串包含非ASCII字符,则这些字符的字节也会出现在这里。 如果您希望代码能够良好地处理不同的语言,那么这是您应该时刻记住的事情。 - Evan Shaw
1
@Chickencha 这是真的。我有点草率地回答了。但是我确实提到了[]int转换以更好地处理Unicode。 - cthom06
3
从Go 1版本开始,您应该使用内置的rune数据类型来处理Unicode。 - hannson
语言规范详细说明了字符串和某些类型的数组(字节用于字节,int用于Unicode点)之间的转换。=>编码/解码是UTF8。 - fjjiaboming
1
ASCII字符大于127怎么办?这个解决方案会返回一个2字节的字符,但是ASCII只有1字节。例如字符170? - TehSphinX

8

您可能无需做任何操作。 如果您只需要读取字符串的字节,可以直接这样做:

c := s[3]

cthom06的回答给出了一个你可以操纵的字节切片:

b := []byte(s)
b[3] = c

如果你愿意,你可以从修改后的字节片段中创建一个新的字符串:

s = string(b)

但你提到了ASCII。如果你的字符串一开始就是ASCII编码,那么你已经完成了。如果它包含其他内容,你需要处理更多的内容,并可能需要发布另一个问题,详细说明你的数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接