【问题标题】:Why are unsigned integers converted to a string prepended with "3" in their byte array form?为什么将无符号整数转换为在其字节数组形式中以“3”开头的字符串?
【发布时间】:2019-05-03 09:38:39
【问题描述】:

如果我在golang中do如下:

data := []byte{}
data = append(data, '1')
data = append(data, '2')

fmt.Printf("%d\n", len(data))
fmt.Printf("%x\n", fmt.Sprintf("%d", len(data)))

我分别得到 2 和 32,而不是两行都只有 2(显然数组只有两个元素)。

如果我 do 有类似的坚固性:

bytes memory encodedPack = abi.encodePacked(prefix, length, signedMessage)

encodePacked 函数还在最终字节数组中添加 3 的长度。

根据 ASCII 表,3 代表“文本结束”。这是这个3的用途吗?

【问题讨论】:

    标签: string go byte solidity


    【解决方案1】:

    Sprintf() 返回一个字符串。您正在打印字符串“2”,其 ASCII 格式为 0x32

    这里的 3 不是文本结尾。如果您查看 ASCII 表,您会注意到字符“0”到“9”被编码为0x30,直到0x39

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 2012-02-17
      • 2012-05-10
      • 2012-03-23
      • 1970-01-01
      • 2014-03-28
      相关资源
      最近更新 更多