我正在编写一个程序,需要获取大小为 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/