一般字符串转十六进制串,将数组转换为十六进制同值的字符串
#include <stdio.h>
#include <string.h>
/*
字符串转十六进制字符串
@param input 输入字符串
@param output 转换结果,长度翻倍
*/
void strToHex(unsigned char *input, unsigned char *output){
int in_len = strlen(input);
int j = 0;
for(size_t i=0;i<in_len;i++)
j += sprintf(output+j,"%02X",*(input + i));
}
/*
将数组转换为十六进制同值的字符串
@param input 输入数组
@param in_len 数组长度
@param output 输出字符串
*/
void arrayToStr(unsigned char *input, int in_len, unsigned char *output){
int j = 0;
for(size_t i=0;i<in_len;i++)
j+=sprintf(output+j,"%02X",*(input+i));
}
int main(void){
unsigned char *input1 = "zyx0123456789xyz";
unsigned char output1[32] = {0};
strToHex(input1,output1);
printf("\noutput1 = %s\n",output1);
unsigned char input2[16] = {0x7A,0x79,0x78,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x78,0x79,0x7A};
unsigned char output2[32] = {0};
arrayToStr(input2,16,output2);
printf("\noutput2 = %s\n",output2);
return 0;
}