gpt4 book ai didi

将包含 12 位数字的 16 位数组转换为 8 位连续数组

转载 作者:行者123 更新时间:2023-11-30 21:07:09 26 4
gpt4 key购买 nike

我的数据是 12 位的,存储在 16 位值的数组中。它们只是值 < 4095。

我需要以8位 block 的形式输出12位数据;顶行是 12 位输入值,底行是 8 位输出值。

11|10|09|08|07|06|05|04|03|02|01|00|11|10|09|08|07|06|05|04|03|02|01|00
07|06|05|04|03|02|01|00|07|06|05|04|03|02|01|00|07|06|05|04|03|02|01|00

对于输出数组:第一个字节包含第一个 12 位值的前 8 位。第二个字节包含第一个 12 位值的最后 4 位和第二个 12 位值的前 4 位。第三个字节包含第二个值的最后 8 位。等等...

所以理想情况下,我想将存储在 16 位数组中的 12 位数字数组转换为值连续的 8 位数组。

从技术上讲,它不必作为 8 位数组输出,当我单步执行 16 位时,我可以通过函数 SPI.Transfer(byte) 输出 8 位值。位数组。

最佳答案

所以这有效;也许有更优雅的方式?

    byteCount = 0;
for (int i = 0; i < numberOf16bitItems; i++) {
if (i % 2) {
//if odd then just grab the last 8 bits
toArray[byteCount] = fromArray[i] & 0b11111111;
byteCount++;
} else {
// if even get the first 8 bits and output, plus get the last 4 bits and the next bits of the next item
toArray[byteCount] = (fromArray[i] >> 4) & 0b11111111;
byteCount++;
toArray[byteCount] = ((fromArray[i+1] >> 8) & 0b1111) | (fromArray[i] & 0b1111 << 4);
byteCount++;
}
}

关于将包含 12 位数字的 16 位数组转换为 8 位连续数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45112672/

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