gpt4 book ai didi

c++ - 将 long 复制到 unsigned char 数组的后半部分

转载 作者:行者123 更新时间:2023-11-28 07:19:41 30 4
gpt4 key购买 nike

我是 C++ 的新手。我需要帮助将长整数值存储在 LSB 大小为 128 位的无符号字符数组中。例如:

long int myLong = 12340;
unsigned char myArray[16] = {};

memcpy(myArray,&myLong,sizeof(long int));myArray 的 MSB 复制它,即,

0x34300000000000000000000000000000

但我需要将 myLong 存储在 myArray 中:

0x00000000000000000000000000003430

注意:我正在使用 64 位小端 (LSB) 机器。而且我必须将相应的字节向右移动。有没有办法实现这个目标或完成这项工作的任何现有功能?

编辑:糟糕的是,我否决了 myLong = 12340myLong = 0x12340 输出之间的差异。我相应地修改了问题 & 是的,如果使用 myLong = 0x12340 & memcpymyArray 看起来像:

0x40230100000000000000000000000000

最佳答案

如果按照您想要的结果,每个半字节(四位,即每个十六进制数字)在结果数组中都有自己的字节,您可以这样做:

size_t i = sizeof(myArray) / sizeof(myArray[0]);  // Get one beyond last index of array
for (size_t shift = 0; shift < sizeof(myLong) * 8 && i > 0; shift += 4)
myArray[--i] = static_cast<unsigned char>((myLong >> shift) & 0x0f);

参见 here for a complete example .

关于c++ - 将 long 复制到 unsigned char 数组的后半部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19683945/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com