将负十进制数转换为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