整数表示中的字符数组

时间:2016-05-22 08:05:19

标签: c binary ascii

我正在 C here>>>中阅读关于指针的帖子,并且有一个例子:

main() {
    ...
    char name[] = "Bill";
    int *q;
    ...
    q = name;
    printf("%d\n", *q);
    ...

这给了我下一个结果:

$ ./pointers_explained 
1819044162

所以问题是关于作者的下一个解释:

  

(看看如何排列ascii值的二进制表示形式   那4个字符,然后一起运行32位,并转换   结果二进制数作为整数。)

" Bill" Binary将是:

  • B :01000010
  • i :01101001
  • l :01101100
  • l :01101100

(来自ASCII二进制表here>>>

我能得到的是:

  

然后一起运行32位,并将结果二进制数转换为整数

那么 - 如何将此" Bill "的二进制转换为十进制(或任何其他)整数" 1819044162"?

1 个答案:

答案 0 :(得分:3)

在ascii代码中,“Bill”是

B: 0x42
i: 0x69
l: 0x6c
l: 0x6c
十六进制模式下的

1819044162为0x6c6c6942,这是因为endianness

在内存中,“Bill”存储为:

     B   i   l   l
name 42  69  6c  6c

但如果它是小端,并从地址name读取一个4字节的整数,则向后读取结果0x6c6c6942,即1819044162。

如果系统是大端,则会产生0x42696c6c