首页 > 解决方案 > Excel中一个单词的十六进制值

问题描述

如何让 Excel 2016 将一个字(两个字节)中的十六进制值转换为十进制(0xffff 必须转换为 -1 而不是 65535)?谢谢

标签: excelexcel-formulaexcel-2016

解决方案


假设您在单元格 A1 中有 16 位(2 字节)十六进制值(例如“FFFF”),您可以这样做:

=BITXOR(HEX2DEC(A1),2^15)-2^15

这会:

  1. 将十六进制值转换为无符号十进制(预期的负数范围从 2^15 开始,即高于预期的非负数范围)。
  2. 反转最高有效位(第 15 位)以交换预期的非负和负范围(此时两个范围仍然是非负的,但现在预期的负范围低于预期的非负范围)。
  3. 将两个范围向下移动,以便预期的负范围到达其最终目的地低于零,并且预期的非负范围达到其最终目的地在零及以上。

例子:“0”变成0,“7FFF”变成32767,“8000”变成-32768,“FFFF”变成-1。

注意:如果输入值在实际十六进制值之前或之后包含垃圾(例如“0x”),则必须在调用 HEX2DEC 之前删除该垃圾(例如通过执行 MID(A1,3,4))。


推荐阅读