根本不确定如何执行此操作,但我有一个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...
答案 0 :(得分:2)
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 = '\0';
return src_size*2+1;
}
答案 1 :(得分:0)
**解决了!
为清楚起见,我想要这个字符串格式“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]}
这正是我试图做的事情