Excel 中一个单词的十六进制值

Hex values in one word in Excel

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

前缀0x(用于表示中的十六进制表示法)可以简单地删除。

然后Excel的HEX2DEC函数可以进行转换。

因此,如果 A1 包含 0x3039,您可以在 B2(或任何地方)中使用此公式将其转换为十进制:

=HEX2DEC(MID(A1,3,99))

MID函数参数表示"return a string up to 99 characters, starting at the 3rd character of A1."(所以,去掉前两个字符)

...为了弥补您的 "custom -1 rule",您可以添加一个 IF 语句:

=IF(LOWER(A1)="0xffff",-1,HEX2DEC(MID(A1,3,99)))

更多信息:

假设单元格 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))。