问题描述
如何计算文件中十六进制偏移326a f338(小字节序)的字节位置。努力了解如何计算。我尝试过的步骤是:
- 转换为小尾数法:833f a623
- 将833f和a623转换为十进制:833f = 33599和a623 = 42531
- 减去2个值:42531-33599 = 8,932
根据此计算,326a f338的十六进制偏移的位置将是文件的8,932字节。这不起作用,因为文件中没有那么多字节。有人可以向我解释我的计算的哪一部分不正确吗?
解决方法
您没有正确地从Little-Endian转换为Big-Endian。如果您在little-endian中有4个字节,即326af338,则您的big-endian表示形式是38f36a32。
Endian-ness是序列化字节的方向。小尾数表示最先发送/存储的最低有效字节,大尾数表示先发送/存储的最高有效字节。
在纸上从一种表示转换为另一种表示,需要沿相反的方向“读取”字节。十六进制表示的一个字节是2位数字,因此您一次向后读小尾数十六进制数字即可得到大尾数十六进制数字。
因此,您的偏移量在基数16中为0x38f36a32,在955476530的基数10中具有小数表示。
从文件/流中读取并以该偏移量进行读取将取决于您的IO库。