Почему целые числа без знака преобразуются в строку с префиксом «3» в форме байтового массива? - PullRequest
0 голосов
/ 01 декабря 2018

Если я делаю следующее в 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 в обеих строках (очевидно, массив имеет только два элемента).

Если я делаю что-то похожее по твердости:

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

Функция encodePacked также добавляет длину к 3 в конечном байтовом массиве.

Согласно таблице ASCII, 3 представляет «конец текста».Это то, для чего эта 3?

1 Ответ

0 голосов
/ 01 декабря 2018

Sprintf() возвращает строку.Вы печатаете строку "2", которая в ASCII равна 0x32.

3 здесь не является концом текста.Если вы посмотрите на таблицу ASCII, вы заметите, что символы от «0» до «9» кодируются как 0x30 до 0x39.

...