您的位置:首页 > 其它

little-endian and big-endian

2010-06-29 10:43 393 查看
Some computer architectures number bytes in a binary word from left to right, which is referred to as

big-endian.

Other architectures number the bytes in a binary word from right to left, which is referred to as little-endian.

Using big-endian and little-endian methods, the number 0x12345678 would be stored as shown in the following table.

[b][/b]

Byte order

Byte 0

Byte 1

Byte 2

Byte 3

Big-endian

0x12

0x34

0x56

0x78

Little-endian

0x78

0x56

0x34

0x12

例子:
下面C# code中有2个txt文件:LittleEndian.txt和BigEndian.txt,他们包含相同的文本内容:都是aa,但不同的编码方式,分别是UCS-2 Little Endian 和UCS-2 Big Endian.

示例中先分别用二进制的方式读出文件中的内容;再用StreamReader读出文件的内容

static void Main(string[] args)
{
byte[] leBytes = ReadAsBinary(".\\LittleEndian.txt");
Console.WriteLine("Little Endian:");
PrintByteArray(leBytes);
Console.WriteLine();

byte[] bigBytes = ReadAsBinary(".\\BigEndian.txt");
Console.WriteLine("Big Endian:");
PrintByteArray(bigBytes);
Console.WriteLine();

byte[] srByes;
using (StreamReader reader = new StreamReader(".\\LittleEndian.txt", true))
{
srByes = Encoding.Unicode.GetBytes(reader.ReadToEnd());
}
Console.WriteLine("StreamReader Little Endian:");
PrintByteArray(srByes);
Console.WriteLine();
}

private static byte[] ReadAsBinary(string path)
{
FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
BinaryReader breader = new BinaryReader(fs);
byte[] bytes = breader.ReadBytes(6);
return bytes;
}


输出:



结论:

UCS-2 Little Endian编码的文件,其内容以FFFE开头;

UCS-2 Big Endian编码的文件,其内容以FEFF开头;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: