知道如何做到这一点,但我有一个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] }
这正是我想做的