我正在尝试在我的项目中实现BIP 39标准。其他一切都很好,但我被严重卡住了,我已经搜索了谷歌和ChatGPT的最大深度,但没有找到解决方案。
我有一个向量<uint8_t>,它存储了33字节的熵和校验和。vector <uint8_t> ent_cs; //have already put 256 bits (32 bytes) of entropy and 8 bits (1 byte) checksum
我试图将这个数组读取为vector <uint16_t>
中的11位表示(0 - 2,047),这样我就可以为每个数字分配一个助记词,这些数字将用作种子来生成私钥。
C++也没有原生的11位整数数据类型
谢谢
我期待24个11位数字,在0和2047之间,存储在uint16_t数组/向量中
2条答案
按热度按时间bq3bfh9z1#
这里有一些简单的代码,它的目的是为了便于理解,而不是最终的效率
似乎起作用了。我做了一些假设,特别是向量中的低位和字节是11位数字中的低位。
pjngdqdw2#
进行这种转换的最简单方法是使用整数类型来缓冲输入中的位,只要积累足够就生成输出字。
从我找到的描述来看,BIP 39似乎想要一个big-endian转换,所以它看起来像这样: