reverse-engineering - 弄清楚数字如何以十六进制形式表示
问题描述
目前正在尝试从本质上对 CNC 机器在备份机器上的程序时生成的文件格式进行逆向工程,以便我可以在标准 PC 上读取程序。已经打开了一些创建的备份文件,可以清楚地看到程序名称等数据的模式,可以清楚地看到明文形式。我正在努力解决的一件事是数字是如何表示的。
例如:数字“20”在此文件中以十六进制形式表示为“40 0D 03 00”。
更多示例:
“-213.6287”:“21 67 DF FF”
“-500.3366”:“9A A7 B3 FF”
试图弄清楚这些十六进制值如何构成这些数字有什么帮助吗?
谢谢
解决方案
这些数字存储为 little-endian 有符号整数,作为千分之一的计数。
例如:数字“20”在此文件中以十六进制形式表示为“40 0D 03 00”。
0x00030d40 = 200000。
“-213.6287”:“21 67 DF FF”
0xffdf6721 = -2136287。
“-500.3366”:“9A A7 B3 FF”
0xffb3a79a = -5003366。
推荐阅读
- python - 如何从每日数据框中计算每月年平均值并按缩写月份绘制
- javascript - 使用花括号将 jsx 字符串转换为 jsx
- python - 使用 Python 以 JSON 格式提取/格式化数据的最佳方法?
- node.js - 无法在节点中导入模块
- sass - 尝试创建空 SCSS 列表时出现语法错误
- python - 矩阵上的 Linspace
- kotlin - 如何将 rxjava2 Zip 函数(来自 Single/Observable)的 arity 推广到 n 个 Nullable 参数而不丢失其类型?
- google-apps-script - 如果单元格上的日期超过 30 天,如何从 Sheet1 剪切线并粘贴到 Sheet2?
- python - 如何解决此错误“create_text_channel 错误”
- http - 试图获取联赛统计数据以计算内部比赛的胜率