大小端問題
在我們發送數據的時候,我們首先要確定的是大端還是小端模式來進行的,接收方接收數據時必須知道數據傳輸的是大端機還是小端機,這個才能正確地讀取和存儲數據,否則就會出現問題。
一個三十二位的二進制程序中存儲有兩種方式, 1:數據的低位保存在內存的高地址中,數據的高位保存在內存的低地址中(大端模式) 2:數據的低位保存在內存的低地址中,數據的高位保存在內存的高地址中(小端模式)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdio.h>
int main()
{
int a = 0x12345678;
printf("%p\n", &a);
printf("%p\n", (char *)&a);
for (int i = 0; i < 4; i++)
{
printf("%#x--->%p\n", *((char*)&a + i), (char*)&a + i);
}
system("pause");
return 0;
}
區分大小端的方法 1:利用地址強制類型轉換
void test()
{
int i = 1;
char j = *((char*)&i);
if(j == 1)
{ printf("小端\n"); }
}
2:利用聯合體性質:不同類型變量共享同一塊內存
void test2()
{
union un
{
int i;
char c;
}u;
u.i = 1;
if(u.c ==1)
{ printf("小端"); }
}