# 大小端

概念

小端,高字节 存 高地址,低字节 存 低地址

大端,高字节 存 高地址,低字节 存 低地址

常见系统以小端存储

  1. JAVA语言,网络字节序为大端(那么,ip,port,为大端,在小端中读取应转换字节序)

举例

C#
short a = 0x0104;
//常见操作系统以小端存储,与书写顺序同直觉,则低地址为04,高地址为01
//应该存
//00000001_00000100
//那大端就变成
//00000100_00000001

//转换====================
//大端转小端,就需要
//低地址0x01移动到高字节
//高地址0x04移动到低字节
byte* p = (byte*)&a;
short b = (*p << 8) | (*(p + 1) >> 8);


//读取====================
//C语言
byte* p = (byte*)&a;
/*
那么 
    小端 *p == 4
    大端 *p == 1
*/

//c# 
byte[] bytes = BitConverter.GetBytes(a);
Console.WriteLine(string.Join(" ",bytes));
/*
那么 
    小端 4 0 0 1
    大端 1 0 0 4
*/