gpt4 book ai didi

c# - BinaryReader.ReadInt32 结果与输入文件相比出乎意料,为什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:29 25 4
gpt4 key购买 nike

我对特定的 BinaryReader 操作感到困惑。

当使用十六进制编辑器 (UltraEdit) 查看二进制文件时,前四个字节是:52 62 38 11

当使用 BinaryReader 遍历同一文件时,如果我先调用 ReadInt32(),我希望 int 值为 1,382,168,593。

.ReadInt32(): Reads a 4-byte signed integer from the current stream and advances the current position of the stream by four bytes.

相反,我得到 288,907,858。

显然我遗漏了一些明显的东西......任何人都可以解释发生了什么吗?

最佳答案

BinaryReader 以小端顺序读取字节。

观察:

csharp> 0x52623811;  // What you expected it to read.
1382168593
csharp> 0x11386252; // What it actually read.
288907858

如果您需要指定正在读取的数据的字节顺序,我建议使用 Mono.DataConvert .我已经在几个项目中使用过它,它非常有用,并且获得了麻省理工学院的许可。 (出于性能原因,它确实使用了不安全的代码,因此您不能在不受信任的上下文中使用它。)

参见 the Wikipedia article on endianness有关此概念的更多信息。

参见 Microsoft's Reference Source有关 BinaryReader 实现的详细信息

关于c# - BinaryReader.ReadInt32 结果与输入文件相比出乎意料,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182206/

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