刚开始学c语言,现在对c中的string有一些疑问,string是char数组。我注意到我可以使用函数 strtol() 将十六进制字符串转换为十进制字符串,但我在网上看到了示例,它们都使用如下所示的内容,它没有任何问题。
char str[]="a24e38154c";
long n = strtol(str,NULL,16);
printf("%ld",n);</i>
我在您的帮助下编辑了我的代码库。
char arr[100];
char *ptr;
memset(arr,0x00,strlen(arr));
ptr = arr;
arr[0] = 0xa2;
arr[1] = 0x4e;
...一共有8个元素
for( int i = 0;i<8;i++){
ptr+=sprintf(ptr,"%02x",arr[i]);
}
printf("%s",arr);
然后输出是 0x000ffffffa24e... 这是什么意思?那些 zeros 和 fs 是从哪里来的?
谢谢
最佳答案
您似乎混淆了字符串和数字以及 long/int。字符串是内存中的字符序列。数字是一个可以用多种方式表示的抽象概念。 long
和 int
是 C 中表示数字的数字数据类型。
因此函数 strtol
将表示为某种基数(“十六进制”或“十进制”或“八进制”都是可能的)的数字字符串的数字转换为 long
该数字的表示。它不会将十六进制转换为十进制(或进行任何类型的“基本”转换),但它可以用作执行此操作的函数的一半。
当您使用 printf("%ld"
时,它会将 long
表示形式的数字转换为十进制字符串表示形式,并在标准输出(通常是您的终端窗口)上打印出来. 这是显示与数字相关的任何内容所必需的,因为终端无法显示数字,只能显示字符。
以上所有数字和数字表示之间的区别可能看起来很模糊,但它非常重要——对于理解如何编写和理解用 C 编写的程序至关重要。
关于c - 如何将 char 数组表示为 c 中的单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586845/