c - 获取十六进制值数组并将其放入一个字符串或整数变量中


根本不

知道如何做到这一点,但我有一个uint8_t数组变量,我想进入一个字符串。所以

uint8_t uid[] = { 04, 7E, 0B, 72, 44, 34, 84 };

我想把它放到一个字符串中,所以它看起来像:

047E0B72443484

我试过做:

String str = (*char)uid;

但是打印出 str 给了我乱七八糟的东西:~rD4 8 ?

最后,我也不会倾向于在一个整数中获取十进制值表示形式,这两种方法都可以,但我不知道从哪里开始,即

值为:4126111146852132的整数

上面的整数来自将十六进制转换为十进制并将其追加在一起:

 - 04 = 4
 - 7E = 126
 - 0B = 11 
 - 72 = 114
 etc...

sprintf "%X"可用于转换为十六进制,但它不能不费吹灰之力地执行任意大小的数组。不妨把这种努力放在更直接的事情上。

#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
static const char* const HEX_CHARS = "0123456789ABCDEF";
ssize_t to_hex(char* dest, size_t dest_size, const void* src, size_t src_size) {
   if (dest == NULL)
      return src_size*2+1;
   if (dest_size < src_size*2+1)
      return -1;
   while (src_size--) {
      *(dest++) = HEX_CHARS[*((const uint8_t*)src) >> 4];
      *(dest++) = HEX_CHARS[*((const uint8_t*)src) & 0xF];
      src = (const uint8_t*)src + 1;
   }
   *dest = '';
   return src_size*2+1;
}

**已解决!

为了清楚起见,我想要这种字符串格式"047E0B72443484",因为我的最终目标是通过JSON(ArduinoJson.h库(发送这些数据。

当我注意到 JSON 库包含一个发送数组的函数时,我最终完成了我想要做的事情。

JsonArray& uid = root.createNestedArray("UID");
uid.add(testArray[0]);
uid.add(testArray[1]);
uid.add(testArray[2]);
uid.add(testArray[3]);

这让我能够从中获取 JSON:

{ "UID":[4,126,11,114] }

这正是我想做的

相关内容

最新更新