将ASCII字符数组转换为十六进制字符数组
我正在尝试将ASCII字符串转换为十六进制格式的字符串,如下所示:将ASCII字符数组转换为十六进制字符数组,c,arrays,string,C,Arrays,String,我正在尝试将ASCII字符串转换为十六进制格式的字符串,如下所示: unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46}; "30313233343536373839414243444546" 这是字符数组:0123456789ABCDEF//Len=16 这应该是输出字符:0x30、0x3
unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};
"30313233343536373839414243444546"
这是字符数组: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]);
}
无符号字符输出\u char[16]={0x30、0x31、0x32、0x33、0x34、0x35、0x36、0x37、0x38、0x39、0x41、0x42、0x43、0x44、0x45、0x46}
完全一样
无符号字符输出_char[]=0123456789ABCDEF
给出或获取从有符号字符到无符号字符的转换,以及可以安全忽略的尾随零字节
无需编写循环、调用printf和转换任何内容。您所做的是获取已存储为十六进制的字符数组,并将其转换为十六进制代码的文本表示形式 在循环结束时,output_char如下所示:
unsigned char output_char[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46};
"30313233343536373839414243444546"
或者,如果阵列足够大,可以容纳它,至少会这样,但它只有所需大小的一半。您可以通过写入数组末尾来调用
但是,ascii字符已经是输出字符所需的格式。不需要做任何转换。< /P> C或C++,只选择一种语言。这是很不清楚的,你的问题是什么?@ StAdGueRug我正在寻找响应,它等于等于变量的表达:无符号char OutPuthchar(16)={0x30,0x31,0x32…},但是所期望的响应不是预期的。期望值和期望值之间的区别是什么?因为如果我创建这样一个变量:。。。这个项目运作良好。如果你真的喜欢,那么。。。。好吗?我正在寻找for等于表示变量的响应,如:unsigned char。。。对不起,我不知道你的意思。请填写一份包含期望/预期输出和实际输出的表格。它提供的上下文可能有助于我理解您的问题。可能需要一个循环和printf来获得OP所描述的“这应该是输出字符:0x30、0x31、0x32…”OP说,如果他声明一件事,然后尝试构建另一件事,他的项目就可以正常工作。我们没有理由相信OP知道他想做什么。我相信什么是有效的,而不是OP认为应该有效的。如果你有充分的理由不相信OP提供的代码,我承认,你应该尝试匹配OP描述的目标,即期望的输出。@Yunnosch我不同意。如果OP走错了路,我有义务告诉他哪里出了问题,而不是帮助他沿着错误的道路走得更远。好吧,让我们不同意。没有讽刺,我承认你的解释也是正确的。