我有一个名为char **str
的二维数组(通过malloc分配)。假设str[0]包含字符串"hello",如何打印出该字符串的十六进制表示?
我尝试了printf("%d\n", (unsigned char)strtol(str[0], NULL, 16))
,但它并没有以十六进制形式打印出来。
谢谢您提供帮助!
我有一个名为char **str
的二维数组(通过malloc分配)。假设str[0]包含字符串"hello",如何打印出该字符串的十六进制表示?
我尝试了printf("%d\n", (unsigned char)strtol(str[0], NULL, 16))
,但它并没有以十六进制形式打印出来。
谢谢您提供帮助!
您对 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 != '\0'; ++cp )
{
printf("%02x", *cp);
}
%2x
中的 2 是什么意思?如果我把它去掉,它还是打印相同的十六进制数。 - neby%02x
,这样如果数字小于16,则会打印前导零。 - R Sahu#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
参考资料
%02x
中的02是什么? - neby*string
改成 string[]
的话,这会导致编译器报错。 - not2qubit