c++ - 数组到十六进制表示

标签 c++ binary hex

我正在编写一个程序,需要获取大小为 n 的数组并将其转换为十六进制值,如下所示:

int a[] = { 0, 1, 1, 0 };

我想将数组的每个值表示为二进制并将其转换为十六进制值。在这种情况下:

0x6000000000000000;//0110...0

它还必须用 0 填充到右侧才能成为 64 位(我在 64 位机器上)。

或者我也可以获取数组元素,转换为十进制并转换为十六进制,这样更容易...在 C++ 中执行此操作的最佳方法是什么?

(这不是作业)

最佳答案

以下内容假设您的 a[] 将仅使用 0 和 1 来表示位。您还需要指定数组长度,在这种情况下可以使用 sizeof(a)/sizeof(int) ,但不适用于堆分配的数组。另外,result 需要是 64 位整数类型。

for (int c=0; c<array_len; c++)
  result |= a[c] << (63-c);

如果您想查看十六进制形式,可以使用 (s)printf( "%I64x", result )

关于c++ - 数组到十六进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824571/

相关文章:

c++ - 运算符比函数快吗?

c++ - Visual Studio 2010 (Windows 7) 中的 Hello World C++ CUDA 程序

c++ - 字符串转换中的十六进制值

python - 如何在Python中将十六进制代码行(\x)获取到十六进制地址(0x)?

C++:通过引用另一个类成员变量来初始化类成员变量?

C++:访问可能不存在的 const vector 成员 - try/catch 或 if (count != 0)?

c# - 取消/编码包含结构数组的嵌套结构

error-handling - 如何对已知的循环冗余校验值进行逆向工程?

string - ASCII 字符串到 MATLAB 中的二进制向量?

c++ - 如何将 .hex 文件反编译为 Arduino 的 C++?