如何將字符串轉換爲十六進制,反之亦然c。例如:,像「謝謝」字符串以十六進制格式:7468616e6b20796f75並從十六進制7468616e6b20796f75到字符串:「謝謝」。有沒有辦法做到這一點?如何將字符串轉換爲十六進制,反之亦然c?
在此先感謝
如何將字符串轉換爲十六進制,反之亦然c。例如:,像「謝謝」字符串以十六進制格式:7468616e6b20796f75並從十六進制7468616e6b20796f75到字符串:「謝謝」。有沒有辦法做到這一點?如何將字符串轉換爲十六進制,反之亦然c?
在此先感謝
sprintf
和sscanf
是這種不夠好。
#include <stdio.h>
#include <string.h>
int main(void) {
char text[] = "thank you";
int len = strlen(text);
char hex[100], string[50];
// Convert text to hex.
for (int i = 0, j = 0; i < len; ++i, j += 2)
sprintf(hex + j, "%02x", text[i] & 0xff);
printf("'%s' in hex is %s.\n", text, hex);
// Convert the hex back to a string.
len = strlen(hex);
for (int i = 0, j = 0; j < len; ++i, j += 2) {
int val[1];
sscanf(hex + j, "%2x", val);
string[i] = val[0];
string[i + 1] = '\0';
}
printf("%s as a string is '%s'.\n", hex, string);
return 0;
}
現在
$ ./a.out
'thank you' in hex is 7468616e6b20796f75.
7468616e6b20796f75 as a string is 'thank you'.
使用'的sprintf()'/'的sscanf()'一個循環中。 –