2

Excel-Functions=HEXTODEC(hex)=DECTOHEX(dec)工作正常,但只能达到0x7F FF FF FF FF. 我需要将数字转换为0xFF FF FF FF FF. 从0x80 00 00 00 00Excel 开始很遗憾地开始将 is 解释为有符号值并将其转换为负小数。如果我尝试转换549 755 813 888为 HEX 值,我只会收到错误消息。

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

溶液不得含有 VBA。可以使用 Office365 的新功能,我已经使用了很多移位和 bitvise xor。

谢谢

4

2 回答 2

2

您可以使用补码的奇迹:

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

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

为逆。

于 2021-04-19T16:55:56.460 回答
0

我无法改进@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,seq,1),"0123456789ABCDEF")-1)*16^(L-seq)))

在此处输入图像描述

于 2021-04-20T11:33:53.700 回答