[英]Convert ASCII Char Array to Hex Char Array
我正在尝试将ASCII字符串转换为十六进制格式的字符串,如下所示:
这是char数组:“ 0123456789ABCDEF” // Len = 16
这应该是输出字符:“ 0x30、0x31、0x32 ...”
我正在尝试:
unsigned char* ascii_char;
unsigned char output_char[16];
ascii_char = "0123456789ABCDEF";
int i = 0;
for (i = 0; i < 16; i++)
{
sprintf(output_char + i * 2, "%02X", ascii_char[i]);
}
但是所需的响应与预期不同。 因为如果我创建这样的变量:
unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};
可以很好地工作。
unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};
与...完全相同
unsigned char output_char[] = "0123456789ABCDEF";
给定或取一个从有符号的char到无符号的char的强制转换,以及一个可以安全忽略的尾随零字节。
无需编写循环,调用printf()或进行任何转换。
您正在做的是获取一个已存储为十六进制的字符数组,并将其转换为十六进制代码的文本表示形式 。
在循环结束时, output_char
如下所示:
"30313233343536373839414243444546"
或者,至少如果阵列足够大以容纳它,它将只是所需大小的一半。 您可以通过写入数组末尾来调用未定义的行为 。
但是, ascii_char
已经采用了output_char
所需的格式。 无需进行任何转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.