【问题标题】:Convert Hex char array to Byte array Arduino [duplicate]将十六进制字符数组转换为字节数组Arduino [重复]
【发布时间】:2017-06-24 10:57:02
【问题描述】:

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

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;

我找不到任何解决方案。

【问题讨论】:

  • 解决方案在这里,这将解决您的问题。 Click Here

标签: c arrays arduino


【解决方案1】:
union 
{
uint32_t number;
uint8_t CardNumberByte[4];
} CardNum;

char cn[] = "B763AB23";

和“转换”:

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

你的字节可以通过

CardNum.CardNumberByte[xx]

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-16
      • 2021-04-13
      • 2018-03-24
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2015-05-05
      相关资源
      最近更新 更多