You need to enable JavaScript to run this app. 如何计算128k/64k Hex文件的字节总和及对应xor校验值
优惠活动
大模型
产品
解决方案
定价
更多

如何计算128k/64k Hex文件的字节总和及对应xor校验值

Hex文件校验值可落地计算方法

适用场景

  • 128k容量存储空间的Hex/二进制镜像,校验值填充起始地址为0x1FFFC
  • 64k容量存储空间的Hex/二进制镜像,校验值填充起始地址为0xFFFC
  • 计算目标:提取校验起始地址之前所有存储字节的16位累加和,计算该累加和与0xFFFF的异或结果,用于校验位填充

核心计算规则

  • 校验范围:从地址0x0000开始,累加至校验起始地址的前一个字节,覆盖范围内所有有效存储字节
  • 数值处理:累加总和仅保留低16位(超出65535的高位直接截断)作为最终存储的总和值;将该16位总和与0xFFFF做异或运算,同样保留16位结果作为异或值
  • 填充规则:校验起始地址开始的4字节空间内,按顺序放置2字节总和、2字节异或结果,字节序匹配目标硬件的存储规则即可

零安装可执行计算步骤

无需安装专业Hex编辑工具,使用Windows系统自带的PowerShell即可完成计算:

  1. 打开目标Hex/二进制镜像文件所在的文件夹,按住Shift在文件夹空白处点击鼠标右键,选择“在此处打开PowerShell窗口”
  2. 复制对应场景的代码块到PowerShell窗口,将代码内的文件名替换为实际目标文件名称,按回车运行即可得到计算结果

128k文件计算代码

# 替换引号内的内容为你的实际镜像文件名
$fileBytes = [System.IO.File]::ReadAllBytes("目标镜像文件名")
$checkRangeEnd = 0x1FFFB
$sum = 0
for ($addr = 0; $addr -le $checkRangeEnd; $addr++) {
    $sum += $fileBytes[$addr]
}
$sum16 = $sum -band 0xFFFF
$xorResult = $sum16 -bxor 0xFFFF
Write-Host "16位累加总和:0x$($sum16.ToString('X4'))"
Write-Host "异或计算结果:0x$($xorResult.ToString('X4'))"

64k文件计算代码

仅需调整校验范围终点,其余逻辑与128k场景完全一致:

# 替换引号内的内容为你的实际镜像文件名
$fileBytes = [System.IO.File]::ReadAllBytes("目标镜像文件名")
$checkRangeEnd = 0xFFFB
$sum = 0
for ($addr = 0; $addr -le $checkRangeEnd; $addr++) {
    $sum += $fileBytes[$addr]
}
$sum16 = $sum -band 0xFFFF
$xorResult = $sum16 -bxor 0xFFFF
Write-Host "16位累加总和:0x$($sum16.ToString('X4'))"
Write-Host "异或计算结果:0x$($xorResult.ToString('X4'))"

手动填充注意事项

  • 拆分16位值为2字节存储时,严格遵循目标硬件的字节序要求:小端存储规则下低字节放低地址、高字节放高地址;大端存储规则下高字节放低地址、低字节放高地址
  • 4字节填充顺序固定为先放2字节累加总和,再放2字节异或结果,不可颠倒

内容的提问来源于stack exchange,提问作者Alex Alexandru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 03:45:08