为什么将无符号整数转换为字节数组形式的前缀为“3”的字符串?
Why are unsigned integers converted to a string prepended with "3" in their byte array form?
如果我 do golang 中的以下内容:
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。
根据ASCIItable,3代表"end of text"。这是这个3的目的吗?
Sprintf()
returns 一个字符串。您正在打印字符串“2”,在 ASCII 中为 0x32
.
这里的3不是文末。如果您查看 ASCII table,您会注意到字符“0”到“9”被编码为 0x30
直到 0x39
.
如果我 do golang 中的以下内容:
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。
根据ASCIItable,3代表"end of text"。这是这个3的目的吗?
Sprintf()
returns 一个字符串。您正在打印字符串“2”,在 ASCII 中为 0x32
.
这里的3不是文末。如果您查看 ASCII table,您会注意到字符“0”到“9”被编码为 0x30
直到 0x39
.