将uint64_t格式的十六进制数转换为c++中的双进制数
Converting hexadecimal number in uint64_t format to double in C++
说,我有一个分析器方法,返回十六进制格式的uint64_t值。我想用十进制格式显示这个值。
有没有一种简单的方法来做到这一点,而不使用标准的c++库?期望的输出在微秒范围内。我从分析器中得到的一个样例值是0x9f0340。首先,uint64_t
本身不是十六进制、八进制或十进制:它只是一个值。除非,也许,它的64位值有一些其他编码?
uint64_t
的范围不能超过double
的范围,但在转换过程中可能会有一些精度损失。这源于双精度数的内部表示,它总共使用64位:1位用于符号,11位用于指数,53-54位用于尾数。相比之下,uint64_t
使用64位作为值。
附近的时间戳可能具有相同的double
值。因此,用另一个减去一个会得到一个差值为uint64,但作为双精度数为零。
在c中从一种转换到另一种的常用方法在c++中也很有效:
uint64_t val64 = 892749724729742uL;
double d = val64;
use static_cast
double val = static_cast<double>(executionTime);
reinterpret_cast说'这些位实际上是双精度',但它们不是。
假设您试图将位重新解释为双值,在c++中完全安全,可移植的方法是使用memcpy
:
uint64_t executionTime = profilerObj.getTime; //for example 0x9f0340
double executionTimeAsDouble = 0.0;
memcpy(&executionTimeAsDouble, &executionTime, sizeof(executionTimeAsDouble);
cout << "Execution time is : " << executionTimeAsDouble;
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 将无符号char*转换为std::istream*C++