【发布时间】:2022-01-09 16:04:47
【问题描述】:
我有一个范围为uint256的字符串编号,比如"115792089237316195423570985008687907853269984665640564039457584007913129639935"。我想将此数字的字节存储到vector<unsigned char> 中。也就是说,我想将0xffffff...fff(256bit)存储在vector中,其中vector的大小不会大于32字节。
我尝试了以下方法:
-
使用
int接收字符串号码并进行转帐,但号码超出int范围; -
使用
boost::multiprecision::number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>。但我不知道如何将字符串编号转换为这种类型。我在网上找不到使用这种类型的详细信息。
【问题讨论】:
-
一种可能的解决方案可能是首先将长十进制数转换为相应的十六进制值,仍然作为字符串。一旦您在字符串中获得了十六进制表示,就很容易将每两个数字转换为字节大小的整数值以存储在向量中。
-
您只需从字符串构造提升数字,或使用 >> 进行流式传输。
-
@Someprogrammerdude 但是,在将十进制字符串数字转换为十六进制字符串数字的过程中,必须需要一个大整数类型来接收十进制字符串进行转换。然后又回到最初的问题。
-
@n.1.8e9-where's-my-sharem 您能否在答案中详细说明?