如何手动将 4 个字节的十六进制转换为十进制

How to convert 4 bytes hex to decimal manually

我正在参加 CTF 挑战赛。我使用十六进制编辑器 (HexFiend) 打开损坏的 BMP 图像文件。我在十六进制 8E262C00 中突出显示 4 个字节。在底部,HexFiend 以十进制显示它们的值 2893454。但是,我使用在线十六进制到十进制转换工具,它们的值是 2384866304.

有人知道 HexFiend 是怎么想出 2893454 的吗?。我相信这是一个正确的答案,因为那是文件的大小。

这是文件的字节顺序。

二进制编码文件可以用小端或大端编码。不同之处在于单个字节具有哪个连续性,即如果您从左侧或右侧读取它们。请注意,位的顺序几乎总是大端。自然的阅读方式是大结局;字节是您所期望的存储。 8E262C00 变为 8E 26 2C 00。但是,该文件似乎以小端格式存储。订单被翻转。换一种说法; 8E262C00 现在变为 00 2C 26 8E,然后导致 2893454

的十进制表示

我认为是 Big Endian 和 Little Endian 的问题。

你应该看看这个在线转换工具,BMP文件格式是Little Endian,但我认为该工具可以通过Big Endian方法转换它。

试一试:https://www.scadacore.com/tools/programming-calculators/online-hex-converter/