我正在 C here>>>中阅读关于指针的帖子,并且有一个例子:
main() {
...
char name[] = "Bill";
int *q;
...
q = name;
printf("%d\n", *q);
...
这给了我下一个结果:
$ ./pointers_explained
1819044162
所以问题是关于作者的下一个解释:
(看看如何排列ascii值的二进制表示形式 那4个字符,然后一起运行32位,并转换 结果二进制数作为整数。)
" Bill" Binary将是:
(来自ASCII二进制表here>>>)
我能得到的是:
然后一起运行32位,并将结果二进制数转换为整数
那么 - 如何将此" Bill "的二进制转换为十进制(或任何其他)整数" 1819044162"?
答案 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
。