从提升多精度中提取位
Extracting bits from boost multiprecision
我正在使用uint256_t对大整数进行算术运算;我想以常规形式(即不是浮点形式)提取数字的位,没有任何精度,因为我只使用整数而不是浮点数。
例如:如果我的代码有:
#include <boost/multiprecision/cpp_int.hpp>
uint256_t v = 0xffffffffffffffffffffffffffffff61;
然后我想要 32 个字节:
61 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
您可以直接使用后端表示形式。
检查文档这是否是公共 API 的一部分。
住在科里鲁
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
int main() {
using namespace boost::multiprecision;
uint256_t v("0xffffffffffffffffffffffffffffff61");
std::copy_n(v.backend().limbs(), v.backend().size(),
std::ostream_iterator<unsigned>(std::cout << std::hex << std::showbase, " "));
}
指纹
0xffffff61 0xffffffff
放下std::showbase
做没有0x
.我选择了这个表示形式,以便最清楚地了解limb
是如何分组的。
你不能直接得到你要求的东西。内部呈现不一定是这样完成的,一种类型甚至使用"十进制"数字。
您可以间接获得
uint256_t v = 0xffffffffffffffffffffffffffffff61;
std::ostringstream ost ;
ost << std::hex << v ;
现在ost.str()是FFFF。FFF61
相关文章:
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 如何从 std::atomic 中提取指针 T<T>?
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么istream不支持右值提取
- 正在将csv文件读取为双精度矢量
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何在C++中的同一函数中使用字符串和双精度
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 如何设置一个范围来提取我想要获得的信息
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 将不同类型的模板参数包提取到双精度向量中会产生警告
- 如何从字符串流中提取双精度
- 从 CSV C++中提取双精度值时出现意外结果
- 从提升多精度中提取位
- std::istream 提取运算符(双精度或浮点数)在 VS 2012 中非常慢
- 无法从不区分大小写的字符串中提取双精度类型
- 从带有文本的字符串中提取双精度类型
- 从字符串(如整型或双精度型)中提取数字