gpt4 book ai didi

unsigned long 和 uint8_t 数组之间的转换

转载 作者:行者123 更新时间:2023-11-30 16:20:03 24 4
gpt4 key购买 nike

我正在尝试向 NFC 卡读取和写入无符号长整型值。

我正在使用 pn532 模块、MifareUltralight 卡和 Adafruit 库。 mifareultralight_WritePage 函数似乎只接受 uint8_t 类型的数组,其大小为 4 字节。

所以我想将一个四字节的long类型值一一存储在一个Uint8_t数组中,并将一个4字节长度的Uint8_t数组转换为一个long类型变量。

#include <Adafruit_PN532.h>

...

uint8_t writeBuffer[4] = { 18, 52, 86, 120 };
nfc.mifareultralight_WritePage(8, writeBuffer);
uint8_t readBuffer[4];
success = nfc.mifareultralight_ReadPage(i, &readBuffer[0]);
if (success) {
nfc.PrintHex(readBuffer, 4);
}

最佳答案

uint8_t writeBuffer[4] = { 18, 52, 86, 120 };

如果索引 0 包含较低字节,则执行以下操作

uint8_t writeBuffer[4] = { 18, 52, 86, 120 };
unsigned long v = writeBuffer[0];

for (size_t i = 1; i != 4; ++i)
v += ((unsigned long) writeBuffer[i]) << (i * 8);

如果索引 0 包含较高字节,则执行例如

uint8_t writeBuffer[4] = { 18, 52, 86, 120 };
unsigned long v = writeBuffer[3];

for (size_t i = 1; i != 4; ++i)
v += ((unsigned long) writeBuffer[3 - i]) << (i * 8);

关于unsigned long 和 uint8_t 数组之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55417238/

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