如何在不使用 VBA 的情况下在 Excel 中的 HEX 和 DEC 之间转换大数字?

问题描述

Excel 函数 =HEXTODEC(hex)=DECTOHEX(dec) 工作正常,但最多只能达到 0x7F FF FF FF FF 的十六进制值。我需要将数字转换为 0xFF FF FF FF FF。从 0x80 00 00 00 00 开始,Excel 遗憾地开始将 is 解释为有符号值并将其转换为负小数。如果我尝试将 549 755 813 888 转换为十六进制值,我只会得到一个错误

有人有解决方法的想法吗?是否可以将十六进制/十进制值分成两部分,将其转换并重新组合在一起?目前我没有想法。

解决方案不得包含 VBA。可以使用Office365的新功能,我已经使用了很多位移和bitvise异或。

谢谢

解决方法

您可以使用二进制补码的奇迹:

=DEC2HEX(IF(A1>=POWER(2,39),A1-POWER(2,40),A1))

=IF(HEX2DEC(A1)<0,HEX2DEC(A1)+POWER(2,HEX2DEC(A1))

反之。

,

我无法改进@Jeroen 对这个特定问题的回答,但值得一提的是,如果您可以使用 Excel 365 函数(实际上是从 Excel 2013 开始),您可以使用 Base 函数而不是 Dec2Hex 来处理最多为 2 的数字^53-1:

=BASE(A1,16)

据我所知,没有 Base 函数的逆函数,但是你可以像这样组合在一起:

=LET(L,LEN(B1),seq,SEQUENCE(L),SUM((FIND(MID(B1,1),"0123456789ABCDEF")-1)*16^(L-seq)))

enter image description here