将Hex char数组转换为Byte数组Arduino

时间:2017-06-24 10:57:03

标签: c arrays arduino

如何将char数组转换为Byte数组?

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

我需要将它转换为Byte数组到byte CardNumberByte[4];所以基本上,它应该是这样的:

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

我无法找到任何解决方案。

2 个答案:

答案 0 :(得分:0)

八个十六进制字符是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;

答案 1 :(得分:0)

union 
{
uint32_t number;
uint8_t CardNumberByte[4];
} CardNum;

char cn[] = "B763AB23";

和"转换":

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

你的字节可以通过

获得
CardNum.CardNumberByte[xx]

但我认为你应该从初学者C ++教程开始学习一些基础知识。