C#里怎样将Big Endian 转换为 Little Endian的字节读取顺序?

ArcJeremy 2005-04-08 01:40:34
我在读一个文件头的时候发现有些字段是Big Endian顺序的(都为int或double型)
想把它转换为Little Endian的读取顺序,不知道.net 类库里有没有相关的类方法之类的还是只能老老实实自己写一个?
...全文
806 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
owe 2005-04-13
  • 打赏
  • 举报
回复
//读取一个Int32型
private int ReadIntByByte( BinaryReader bReader)
{
byte[] b = new byte[4];
for(int i = 3; i >= 0; i--)
{
b[i] = bReader.ReadByte();
}
return BitConverter.ToInt32(b, 0);
}
demonfox 2005-04-13
  • 打赏
  • 举报
回复
是吗?我没有亲自试过,你有测试文件么?发一个给我,我试试看:
yin_hu@msn.com
ArcJeremy 2005-04-13
  • 打赏
  • 举报
回复
TO:demonfox(坐井观天)
我在MSDN里也查到了这个方法,但是好像不行。不知道是我的系统问题还是什么不管我用Unicode文本文件还是二进制文件都还是以Little Endian的方式读。

TO:xiaohaige(无聊聊)
这个方法不错也很方便,调试也通过了。不过我还有Double类型的,MSDN里介绍好像只支持short,int,long这三个类型。
wjcking 2005-04-09
  • 打赏
  • 举报
回复
up
demonfox 2005-04-09
  • 打赏
  • 举报
回复
可以的,只要是2个bytes的倍数就可以(就是偶数个bytes,int和double都是4bytes),如果是ASCII Code(1个byte),就不行了。
xiaohaige 2005-04-08
  • 打赏
  • 举报
回复
用IPAddress的HostToNetworkOrder和NetworkToHostOrder
ArcJeremy 2005-04-08
  • 打赏
  • 举报
回复
我读的是二进制文件,里面都是int或者double类型~
这样行吗?
demonfox 2005-04-08
  • 打赏
  • 举报
回复
直接作为BigEndian读进来。不过下面的方法只能用于Unicode编码:

System.Text.Encoding encoding = System.Text.Encoding.BigEndianUnicode;
StreamReader reader = new StreamReader("TextFile.txt", encoding);
string line = reader.ReadLine();
while (line != null)
{
Console.WriteLine(line);
line = reader.ReadLine();
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧