gpt4 book ai didi

C# - Big Endian 中的二进制读取器?

转载 作者:IT王子 更新时间:2023-10-29 04:15:48 25 4
gpt4 key购买 nike

我试图通过使用一个程序来读取所有不同的信息位来提高我对 STFS 文件格式的理解。使用一个引用哪些偏移量包含哪些信息的网站,我编写了一些代码,让二进制阅读器遍历文件并将值放入正确的变量中。

问题是所有数据都应该是大端,而二进制读取器读取的所有内容都是小端。那么,解决此问题的最佳方法是什么?

我可以创建一个二进制读取器的模拟类来返回一个颠倒的字节数组吗?有没有什么我可以在类实例中更改,使其以大端方式读取,这样我就不必重写所有内容?

感谢任何帮助。

编辑:我尝试添加 Encoding.BigEndianUnicode 作为参数,但它仍然读取小端。

最佳答案

我通常不会回答自己的问题,但我已经用一些简单的代码完成了我想要的:

class BinaryReader2 : BinaryReader { 
public BinaryReader2(System.IO.Stream stream) : base(stream) { }

public override int ReadInt32()
{
var data = base.ReadBytes(4);
Array.Reverse(data);
return BitConverter.ToInt32(data, 0);
}

public Int16 ReadInt16()
{
var data = base.ReadBytes(2);
Array.Reverse(data);
return BitConverter.ToInt16(data, 0);
}

public Int64 ReadInt64()
{
var data = base.ReadBytes(8);
Array.Reverse(data);
return BitConverter.ToInt64(data, 0);
}

public UInt32 ReadUInt32()
{
var data = base.ReadBytes(4);
Array.Reverse(data);
return BitConverter.ToUInt32(data, 0);
}

}

我知道那是我想要的,但我不知道怎么写。我找到了这个页面并且它有帮助:http://www.codekeep.net/snippets/870c4ab3-419b-4dd2-a950-6d45beaf1295.aspx

关于C# - Big Endian 中的二进制读取器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com