将负十进制数转换为HEX
我必须承认,我不太记得十六世纪来自学校(十五年前)的HEX等等。 在任何情况下,我有一些十进制格式的值,我需要转换成hex。 我正在使用Excel,但是如果需要的话,我可以在VBA中编写一个函数(或者通过VB.NET中的代码来完成)。
我已经知道hex结果应该是什么样子(另一个来源),但我需要使用Excel来得到这个结果。 如果知道十分重要的话,十进制input的来源以及(右)hex结果的结果来自Linux系统。
积极的数字似乎正确地转换,而负面的数字让我头疼,因为Excel增加了HEX两个额外的字母(两个FF)相比,我想要的结果。
例如:十进制input:-524288
正确的hex输出我必须得到:FFF80000
在Excel中使用公式我得到:FFFFF80000(我在HEX输出的开始得到2 FF额外)
另一个例子:
十进制input:-29446758
应该是FE3EAD9A
但在Excel中我得到FFFE3EAD9A
看来我总是在HEX输出中获得2个额外的FF。
有人可以解释(以一种简单的方式)为什么我得到2额外的FF,如果我可以安全地删除它们?
在Excel中, =DEC2HEX
默认返回10个字符。
如果你想得到只有8,作为你的问题build议使用:
=DEC2HEX(A1,8)
不过,除非您有兼容性问题,否则您可能会保留默认数字。 请记住,“F”字符作为填充字符的负数(正方形“0”是正数)。
编辑
如上所述,您的评论中提到了上述不利情况。
以下工作:
=RIGHT(DEC2HEX(A1),8)
我不太清楚你在做什么,因为你没有包括你的公式。 我的猜测是你正在使用这样的function:
=DEC2HEX(A1)
虽然它有一个可选的参数来控制返回的数字,但是当input是负数时这是不起作用的。
相反,你应该使用一些VBA:
Public Function DecToHex(val As Variant) As Variant DecToHex = Hex(val) End Function