题
假设我有这些变量,
const uint8_t ndef_default_msg[33] = {
0xd1, 0x02, 0x1c, 0x53, 0x70, 0x91, 0x01, 0x09,
0x54, 0x02, 0x65, 0x6e, 0x4c, 0x69, 0x62, 0x6e,
0x66, 0x63, 0x51, 0x01, 0x0b, 0x55, 0x03, 0x6c,
0x69, 0x62, 0x6e, 0x66, 0x63, 0x2e, 0x6f, 0x72,
0x67
};
uint8_t *ndef_msg;
char *ndef_input = NULL;
我怎么可以转换 ndef_input
(这仅仅是一个纯文本,像"你好"),以六和存入 ndef_msg
?正如你可以看到 ndef_default_msg
是六角的形式。内部数据 ndef_msg
应该是这样的东西。
一点背景,在原来的程序(源代码),该计划将打开一个文件,得到的数据,并把它的内部 ndef_msg
, ,然后将写入卡。但我不明白为何它可以采取数据并将其转换到hex。
我要简化程序,所以将直接要求用户对文本(而不是要求为一个文件)。
解决方案
为什么不直接将其读入ndef_msg(如果假定是纯数组,则减\ 0)。十六进制仅用于演示,您可以选择十进制或八进制而不会影响内容。 通用标签
您可能需要对字符串的读取进行不同的处理,以允许出现空格,并且也许忽略\0
,这只是为了说明我的观点。
其他提示
可能不是很优雅,但是很简单:定义一个查找表,该表将字符代码(0到255)映射为所需的值。 通用标签
我曾多次使用过这种非优雅的解决方案(例如用于颜色映射),并且其效果与其他高级解决方案一样好
如果我理解正确的,你读取数据的格式存储在六角 ndef_input
,分析和保存价值 ndef_msg
.
你可以使用
// parse the hex string and store it in an int variable
int temp_int;
sscanf(ndef_input, "%x", &temp_int);
// covert it to uint8_t type
ndef_msg = malloc(sizeof(uint8_t));
*ndef_msg = (uint8_t)temp_int;
通用标签
希望能对您有所帮助 通用标签
ascii2hex的定义如下: 通用标签
不隶属于 StackOverflow