Byte数组与其它类型间的转换

可以通过BitConverter类来将字节数组转换为其它类型

返回类型 方法
bool ToBoolean(Byte[], Int32)
char ToChar(Byte[], Int32)
double ToDouble(Byte[], Int32)
short ToInt16(Byte[], Int32)
int ToInt32(Byte[], Int32)
long ToInt64(Byte[], Int32)
float ToSingle(Byte[], Int32)
ushort ToUInt16(Byte[], Int32)
uint ToUInt32(Byte[], Int32)
ulong

ToUInt64(Byte[], Int32)

在运用BitConverter类时,要记住的一个重点是它的行为取决于硬件架构(代码在该硬件架构上运行)的字节顺序(endianness)——就是说,integer字节在内存中的存储顺序。如果你将bit保存为可以在许多不同平台上读取的一个文件格式,那么就会出问题。BitConverter有一个公有的IsLittleEndian字段。

例如在计算机结构为 little-endian 的情况下反转数组(即首先存储最低有效字节),然后调用 ToInt32(Byte[], Int32) 方法以将数组中的四个字节转换为 int。ToInt32(Byte[], Int32) 的第二个参数指定字节数组的起始索引。

byte[] bytes = { 0, 0, 0, 25 };

// If the system architecture is little-endian (that is, little end first),
// reverse the byte array.
if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);

int i = BitConverter.ToInt32(bytes, 0);
Console.WriteLine("int: {0}", i);
// Output: int: 25

在此示例中,调用 BitConverter 类的 GetBytes(Int32) 方法以将 int 转换为字节数组。

说明:

输出可能会根据计算机结构的 endian 设置而不同。

byte[] bytes = BitConverter.GetBytes(201805978);
Console.WriteLine("byte array: " + BitConverter.ToString(bytes));
// Output: byte array: 9A-50-07-0C
posted @ 2010-05-06 20:10  星a  阅读(845)  评论(0编辑  收藏  举报