将cpp_int类型导出到位时,boost :: multiprecision :: export_bits会丢失符号

时间:2016-11-17 11:37:34

标签: c++ boost bits

我将负号值输出到位并导回,但是当输入符号的位丢失时。

typedef multiprecision::int512_t balance_value;
vector<uint8_t> byteSet;
export_bits(static_cast<boost::multiprecision::int512_t>(balance), back_inserter(byteSet), 8);

当我尝试将位导回到int512_t时,符号丢失了。

balance_value balance;
import_bits(balance, byteSet.begin(), byteSet.end());

1 个答案:

答案 0 :(得分:0)

这是设计的。 documentation

  

将val的绝对值导出到OutputIterator out。该函数一次将chunk_size位写入OutputIterator,如果msv_first为真,则首先写入最重要的块。每个chunk_size块中的字节和位顺序始终采用机器本机格式。此外,每个块在boost::uintmax_t分配给*out时都会存储在SELECT mt_prs_groups.groupId, mt_prs_groups.groupName, mt_prs_administrators.administratorId FROM mt_prs_status INNER JOIN (mt_prs_administrators INNER JOIN mt_prs_groups ON mt_prs_administrators.administratorId = mt_prs_groups.administratorId) ON (mt_prs_status.statusId = mt_prs_groups.statusId) AND (mt_prs_status.statusId = mt_prs_administrators.statusId) WHERE (((mt_prs_status.status)="Active") AND ((mt_prs_administrators.administratorId)=3)) OR (((mt_prs_administrators.administratorId)=4)); 中。

如果您需要便携式表示,还要注意字节序问题。