gpt4 book ai didi

c - 如何将 char 数组表示为 c 中的单个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:03 25 4
gpt4 key购买 nike

刚开始学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。字符串是内存中的字符序列。数字是一个可以用多种方式表示的抽象概念。 longint 是 C 中表示数字的数字数据类型。

因此函数 strtol 将表示为某种基数(“十六进制”或“十进制”或“八进制”都是可能的)的数字字符串的数字转换为 long 该数字的表示。它不会将十六进制转换为十进制(或进行任何类型的“基本”转换),但它可以用作执行此操作的函数的一半。

当您使用 printf("%ld" 时,它会将 long 表示形式的数字转换为十进制字符串表示形式,并在标准输出(通常是您的终端窗口)上打印出来. 这是显示与数字相关的任何内容所必需的,因为终端无法显示数字,只能显示字符。

以上所有数字和数字表示之间的区别可能看起来很模糊,但它非常重要——对于理解如何编写和理解用 C 编写的程序至关重要。

关于c - 如何将 char 数组表示为 c 中的单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com