Linux C 程序 - HEX 我怎样才能用 0x 作为前缀
Linux C program - HEX how can I Prefix with 0x
此程序将字符串转换为十六进制。
#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.
int i,j;
for ( i = 0, j = 0; i < len; i++, j+= 2) {
sprintf(hex + j, "%02X", text[i] );
printf("0x%X ", text[i] ); //this prints fine
}
printf("'%s' in hex is %s.\n", text, hex); //'thank you' in hex is 7468616e6b20796f75.
// Convert the hex back to a string.
len = strlen(hex);
for (i = 0, j = 0; j < len; i++, j+= 2) {
int val[1];
sscanf(hex + j, "%2x", val);
string[i] = val[0];
string[i + 1] = '[=11=]';
}
printf("%s as a string is '%s'.\n", hex, string);
return 0;
}
但我需要0x74, 0x68, 0x61, 0x6E, 0x6B, 0x20, 0x79, 0x6F, 0x75
或分配给数组
无符号字符键[] = {0x74、0x68、0x61、0x6E、0x6B、0x20、0x79、0x6F、0x75};
如何将这个十六进制值存储到字符串中。
在 sprintf()
格式中使用 0x
,并相应地增加增量 j
。
for ( i = 0, j = 0; i < len; i++, j+= 5) {
sprintf(hex + j, "0x%02X ", text[i] );
printf("0x%X ", text[i] );
}
那你扫描的时候需要允许这个。跳过前两个字符,然后递增 5
.
也没有必要使 val
成为一个数组,您只需要一个 int
变量。并且可以在循环的末尾加上null终止符,而不是每次都通过循环。
for (i = 0, j = 2; j < len; i++, j+= 5) {
int val;
sscanf(hex + j, "%2x", &val);
string[i] = val;
}
string[i + 1] = '[=11=]';
此程序将字符串转换为十六进制。
#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.
int i,j;
for ( i = 0, j = 0; i < len; i++, j+= 2) {
sprintf(hex + j, "%02X", text[i] );
printf("0x%X ", text[i] ); //this prints fine
}
printf("'%s' in hex is %s.\n", text, hex); //'thank you' in hex is 7468616e6b20796f75.
// Convert the hex back to a string.
len = strlen(hex);
for (i = 0, j = 0; j < len; i++, j+= 2) {
int val[1];
sscanf(hex + j, "%2x", val);
string[i] = val[0];
string[i + 1] = '[=11=]';
}
printf("%s as a string is '%s'.\n", hex, string);
return 0;
}
但我需要0x74, 0x68, 0x61, 0x6E, 0x6B, 0x20, 0x79, 0x6F, 0x75
或分配给数组
无符号字符键[] = {0x74、0x68、0x61、0x6E、0x6B、0x20、0x79、0x6F、0x75};
如何将这个十六进制值存储到字符串中。
在 sprintf()
格式中使用 0x
,并相应地增加增量 j
。
for ( i = 0, j = 0; i < len; i++, j+= 5) {
sprintf(hex + j, "0x%02X ", text[i] );
printf("0x%X ", text[i] );
}
那你扫描的时候需要允许这个。跳过前两个字符,然后递增 5
.
也没有必要使 val
成为一个数组,您只需要一个 int
变量。并且可以在循环的末尾加上null终止符,而不是每次都通过循环。
for (i = 0, j = 2; j < len; i++, j+= 5) {
int val;
sscanf(hex + j, "%2x", &val);
string[i] = val;
}
string[i + 1] = '[=11=]';