- 论坛徽章:
- 0
|
ittle endian:0xcdab3412,即0x00000000-0xcd,0x00000001-0xab,0x00000002-0x34,0x00000003-0x12
little endian把低位存放到高位
上面的说反了吧.little endian应当是
0x00000000-0x12
0x00000001-0x34
....
这样的吧.
little endian把低字节存放到低地址,把高字节放到高地址.
数据0xcdab3412从左到右,由高字节到低字节,由高地址到低地址.
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- int main()
- {
- int value = 0x12345678;
- union ValueT
- {
- int value;
- char data[4];
- } a;
- a.value = 0x12345678;
- printf("value is 0x%x\n", a.value);
- printf("address is %p, 0x%x\n",&a.data[0], a.data[0]);
- printf("address is %p, 0x%x\n",&a.data[1], a.data[1]);
- printf("address is %p, 0x%x\n",&a.data[2], a.data[2]);
- printf("address is %p, 0x%x\n", &a.data[3], a.data[3]);
- exit(EXIT_SUCCESS);
- }
复制代码
value is 0x12345678
address is 0xbffffa0c, 0x78
address is 0xbffffa0d, 0x56
address is 0xbffffa0e, 0x34
address is 0xbffffa0f, 0x12
[ 本帖最后由 coldwarm 于 2006-9-5 21:56 编辑 ] |
|