在 C 中将字符数组打印为十六进制
Print character array as hex in C
我有一个名为 char **str
的二维数组(由 malloc 分配)。假设 str[0] 有字符串 "hello"。我将如何打印该十六进制?
我试过 printf("%d\n", (unsigned char)strtol(str[0], NULL, 16))
,但没有以十六进制打印出来。
任何帮助将不胜感激,谢谢!
Use %x flag to print hexadecimal integer
example.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *string = "hello", *cursor;
cursor = string;
printf("string: %s\nhex: ", string);
while(*cursor)
{
printf("%02x", *cursor);
++cursor;
}
printf("\n");
return 0;
}
输出
$ ./example
string: hello
hex: 68656c6c6f
参考
您对 strtol
的功能感到困惑。如果你有一个代表十六进制数字的字符串,你可以使用 strtol
就像你有:
char s[] = "ff2d";
int n = strtol(s, NULL, 16);
printf("Number: %d\n", n);
当您想以十六进制打印字符串的字符时,请为字符串的每个字符使用 %x
格式说明符。
char s[] = "Hello";
char* cp = s;
for ( ; *cp != '[=11=]'; ++cp )
{
printf("%02x", *cp);
}
我有一个名为 char **str
的二维数组(由 malloc 分配)。假设 str[0] 有字符串 "hello"。我将如何打印该十六进制?
我试过 printf("%d\n", (unsigned char)strtol(str[0], NULL, 16))
,但没有以十六进制打印出来。
任何帮助将不胜感激,谢谢!
Use %x flag to print hexadecimal integer
example.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *string = "hello", *cursor;
cursor = string;
printf("string: %s\nhex: ", string);
while(*cursor)
{
printf("%02x", *cursor);
++cursor;
}
printf("\n");
return 0;
}
输出
$ ./example
string: hello
hex: 68656c6c6f
参考
您对 strtol
的功能感到困惑。如果你有一个代表十六进制数字的字符串,你可以使用 strtol
就像你有:
char s[] = "ff2d";
int n = strtol(s, NULL, 16);
printf("Number: %d\n", n);
当您想以十六进制打印字符串的字符时,请为字符串的每个字符使用 %x
格式说明符。
char s[] = "Hello";
char* cp = s;
for ( ; *cp != '[=11=]'; ++cp )
{
printf("%02x", *cp);
}