c++ - 如何将uint32_t数字转换为char [8]?

标签 c++ binary hex converters

假设我们有一个string s = "453acd0f"。现在我想做这样的事情:

uint32_t res = 0;
for (size_t i = 0; i < 8; ++i) {
    res |= ConvertCharToHexNumber(s[8 - i - 1]) << (i * 4);
}
但是,如果我有一个从二进制文件读取的uint32_t var变量,该怎么办?

最佳答案

将4字节uint32_t转换为char[8]的最简单方法:

    uint32_t var = 100;
    char res[8]{};
    res[0] = (var >> 28) & 0XF;
    res[1] = (var >> 24) & 0XF;
    res[2] = (var >> 20) & 0XF;
    res[3] = (var >> 16) & 0XF;
    res[4] = (var >> 12) & 0XF;
    res[5] = (var >> 8)  & 0XF;
    res[6] = (var >> 4)  & 0XF;
    res[7] = (var >> 0)  & 0XF;
您可以将其简化为循环:
    int shiftby = 32;
    for (int i = 0; i < 8; i++) {
        res[i] = (var >> (shiftby -= 4)) & 0xF;
    }

关于c++ - 如何将uint32_t数字转换为char [8]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63014768/

相关文章:

c - 如何将十六进制值转换为 WORD、DWORD 或 QWORD 并将结果存储在双变量中?

binary - 是否可以将最高有效的十进制数字精度转换为二进制并返回十进制而又不丢失有效值6或7.225?

java - 为什么这个正则表达式与 Java 中的这种颜色不匹配?

c++ - 函数内不允许定义或重新声明

c++ - Visual Studio 2010 或 C/C++ 性能监视器

node.js - Express - 从 Web 服务返回二进制数据

C++ 二进制文件

c - 从数组中读取两个字符作为C中的一个十六进制数

c++ - 列表初始化的缩小转换是错误还是只是警告?

c++ - 指向二维数组和分配的指针