C-将十六进制char阵列转换为字节阵列Arduino



如何将char数组转换为字节数组?

char CardNumber[8] = "B763AB23"; // Length is 8, basically it's in Hex
                                 // B7 63 AB 23

我需要将其转换为字节数组到byte CardNumberByte[4];,因此基本上应该是:

CardNumberByte[0] = B7;
CardNumberByte[1] = 63;
CardNumberByte[2] = AB;
CardNumberByte[3] = 23;

我找不到任何解决方案。

union 
{
uint32_t number;
uint8_t CardNumberByte[4];
} CardNum;
char cn[] = "B763AB23";

和"转换":

CardNum.Number = strtol(cn, NULL, 16);

,您的字节可通过

避免使用
CardNum.CardNumberByte[xx]

,但我认为您应该从居民C 教程开始并学习一些基础知识。

八个十六进制字符是32位,因此首先将数字放入长(arduino上的32位(值:

long number = (long) strtol(&CardNumber[0], NULL, 16);

然后将值换到字节中:

CardNumberByte[0] = number >> 24;
CardNumberByte[1] = number >> 16 & 0xFF;
CardNumberByte[2] = number >> 8 & 0xFF;
CardNumberByte[3] = number & 0xFF;

最新更新