Если я делаю следующее в 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?