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

标签 c

刚开始学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/

相关文章:

C write() 函数不工作

在 C 中创建 *** 对象(指向指针的指针)

c - 指针-查询

c++ - 将所有 CUDA 函数更改为 __host__ __device__

c++ - 如果所需的标志不存在,则编译失败

c++ - 将 libpcap 数据包数据从 const u_char* 复制到另一个 const u_char*

c - C 洪水填充程序中的 "Shadow"

c++ - Arduino - 如何从serial.read()提供结构?

c - 段错误,无法递增

c - 在文件中逐行存储巨大的数组会导致文件损坏