c - 将 8 字节值中的每个字节存储在数组中

标签 c arrays

我有一个很大的字节数组,称为内存和 uint64_t名为 valA 的值。我想要 valA 中的每个字节存储在内存中的某个位置(内存中的每个位置保存一个字节)。我在内存中的起始位置是 3832。

这是我到目前为止编写的代码:

uint64_t valA = 81985529216486895;
memory[3832] = valA;

当我打印出内存中的每个位置时:

printf("number in memory - %d%d%d%d%d%d%d%d",
       memory[valE+0], memory[valE+1], memory[valE+2], memory[valE+3],
       memory[valE+4], memory[valE+5], memory[valE+6], memory[valE+7]);

输出为“内存中的数字 - 2390000000”。我希望输出是存储在 valA 中的原始数字。 。有什么建议吗?

最佳答案

I want the output to be the original number that was stored in valA

它不适用于十进制输出,因为十进制表示不会在字节边界处中断。不过,您可以让它使用十六进制表示法:

long long unsigned int valA = 81985529216486895LL;
uint8_t memory[5000];
uint32_t valE = 3832;
memcpy(&memory[valE], &valA, sizeof(valA));
printf(
    "%02x%02x%02x%02x%02x%02x%02x%02x\n"
,   memory[valE+7]
,   memory[valE+6]
,   memory[valE+5]
,   memory[valE+4]
,   memory[valE+3]
,   memory[valE+2]
,   memory[valE+1]
,   memory[valE+0]
);

Demo

请注意,字节顺序相反,以匹配演示系统上的顺序。

关于c - 将 8 字节值中的每个字节存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43301092/

相关文章:

python - Python 中的排序列表(另一种方式)

arrays - 创建最小成本数组

c - 为什么程序退出后rmdir会删除文件夹?(在Win7中使用Dev C++)

c - 我需要/可以在 C 中释放一个空指针吗?

c - 在 ARM (SabreLIte) 上实现 AODV 时出错

c# - 获取数组最后 N 个元素的最有效方法

java - java中不同的数字

c - C 中带有字符串的 Malloc

代码仍然在没有任何包含的情况下运行(Bloodshed 的 Dev-C++)

javascript - 使用 Lodash 查找 [] 数组内 JSON 数组的索引