本帖最后由 yuxijian2020 于 2021-3-28 00:53 编辑
是这样吗?#include <stdio.h>
char* result;
void printASCCI(char* str, int len)
{
int c;
int single;
result = (char*)malloc(2 * len);
memset(result, 0, 2 * len);
for (int i = 0; i < len; i++)
{
c = (int)*str++;
c = c & 0x000000ff;
//这里就是一个字节一个字节的转成字符串
single = c >> 4;
if(single <= 0x9)
result[2 * i] = single + 0x30;
else
result[2 * i] = single + 0x37; //这里改成0x57就变成小写字母了
single = c & 0x0f;
if (single <= 0x9)
result[2 * i + 1] = single + 0x30;
else
result[2 * i + 1] = single + 0x37; //这里改成0x57就变成小写字母了
//我没有最后判断字符串结束后加'\0'
//而是每次加完2个字符之后立刻在后面补'\0'
result[2 * i + 2] = '\0';
printf("%02x", c);
}
printf("\n");
}
int main()
{
char a[] = "abcdefghijklmn";
printASCCI(a, strlen(a));
printf_s("result = %s\n", result);
return 0;
}
|