gpt4 book ai didi

c - 数组到数组算术

转载 作者:行者123 更新时间:2023-11-30 15:54:58 25 4
gpt4 key购买 nike

我在 3 个数组 a[0]a[1]a[2] 中有 24 位数据,需要计算乘以和除以某个常数,结果仍然在 3 数组中。

例如,data = 999900h 存储在 a[0] = 99a[1] = 99a [2] = 00

[(999900h/64)*15000]/157286 << **process???**

结果将是 3A97h 存储在 b[0] = 00b[1] =3Ab[2 ] = 97

我的问题是

1.) 如何编写程序中快速计算的代码,快速指针?如何在进程中使用指针?

2.) 是否可以不使用像数组到整数和整数到数组这样的转换过程?

最佳答案

这是最简单的“解决方案”:

 uint32_t data = 0x00999900;

unsigned char const * a = (unsigned char const *)&data;

现在你有a[0],...,a[3]。该顺序取决于系统的字节顺序。

<小时/>

与字节顺序无关的解决方案以代数方式工作:

uint32_t data = 0x3A97;

unsigned char b[sizeof data] = { data >> 24 & 0xFF, // b[0]
(data >> 16) & 0xFF, // b[1]
(data >> 8) & 0xFF, // b[2]
data & 0xFF // b[3]
};
<小时/>

您还可以从数组中重新构造一个值。这是依赖于字节顺序的方式:

uint32_t data;
unsigned char * p = (unsigned char *)&data;
p[0] = 0x00;
p[0] = 0x99;
p[0] = 0x99;
p[0] = 0x00;

// now "data" is 0x00999900

这是代数方法:

uint32_t data = a[0] * 256 * 256 * 256 + a[1] * 256 * 256 + a[2] * 256 + a[3];

关于c - 数组到数组算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626190/

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