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

Posted

技术标签:

【中文标题】如何在不使用 VBA 的情况下在 Excel 中转换 HEX 和 DEC 之间的大数字?【英文标题】:How to convert big numbers between HEX and DEC in Excel without using VBA? 【发布时间】:2021-04-19 16:36:22 【问题描述】:

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 转换为 HEX 值,我只会收到错误消息。

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

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

谢谢

【问题讨论】:

【参考方案1】:

你可以使用补码的奇迹:

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

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

反之。

【讨论】:

【参考方案2】:

我无法改进@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)))

【讨论】:

以上是关于如何在不使用 VBA 的情况下在 Excel 中转换 HEX 和 DEC 之间的大数字?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在没有 VBA 的情况下在 Excel 中连接两个数组? [复制]

如何在仍可以更改工作表中的值的情况下在vba excel中执行Do Event计时器?

在不使用 VBA 的情况下突出显示 Excel 中的活动行/列?

在不使用 subprocess.PIPE 的情况下在 subprocess.check_call 中捕获 stderr

如何在不使用 AudioQueueRef 的情况下在 AudioQueue 中设置音量?

如何在不使用 &nbsp 的情况下在行内元素之间添加空格 [重复]