【问题标题】:Go string to ascii byte array将字符串转到 ascii 字节数组
【发布时间】:2010-07-30 13:10:59
【问题描述】:

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

【问题讨论】:

    标签: go byte ascii


    【解决方案1】:

    如果您正在寻找转化,只需byteArray := []byte(myString)

    语言规范详细说明了字符串和某些类型的数组之间的转换(byte 对字节,int 对 Unicode 点)

    【讨论】:

    • 我认为 cthom06 意识到了这一点,但严格来说,这不是一个“ASCII”字节数组。它更像是一个 UTF-8 字节数组。如果字符串包含非 ASCII 字符,那么这些字符的字节也会在此处。如果您希望您的代码与不同的语言很好地兼容,那么您应该始终牢记这一点。
    • @Chickencha 是真的。我给出了快速而肮脏的答案。但我确实提到了 []int 转换以获得更好的 unicode 处理
    • 从 Go 版本 1 开始,您应该使用内置的 rune 数据类型来处理 Unicode。
    • 语言规范详细说明了字符串和某些类型的数组之间的转换(byte 对字节,int 对 Unicode 点)。 => 编码/解码为 UTF8。
    • 大于 127 的 ASCII 字符呢?然后,此解决方案返回一个 2 字节字符,但 ASCII 仅是一个字节。例如字符 170?
    【解决方案2】:

    您可能不需要做任何事情。如果你只需要读取一个字符串的字节,你可以直接这样做:

    c := s[3]
    

    cthom06 的回答为您提供了一个可以操作的字节片:

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

    然后你可以根据需要从修改后的字节切片创建一个新字符串:

    s = string(b)
    

    但是你提到了 ASCII。如果您的字符串以 ASCII 开头,那么您就完成了。如果它包含其他内容,您需要处理更多内容,并且可能希望发布另一个问题,其中包含有关您的数据的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      相关资源
      最近更新 更多