将负十进制数转换为HEX

时间:2011-03-27 18:27:03

标签: excel programming-languages hex

我必须承认,我从学校(25年前)不太记得HEX等等。在任何情况下,我都有一些十进制格式的值,我需要将其转换为HEX。我正在使用Excel,但如果需要,我可以在VBA中编写一个函数(或者通过VB.NET中的代码来编写函数)。

我已经知道HEX结果应该是什么样子(另一个来源)但是我需要使用Excel来准确地得到这个结果。十进制输入的来源以及(右)HEX结果的结果来自Linux系统,如果知道这一点很重要。

正数似乎可以正确转换,而负数让我头疼,因为Excel增加了HEX的两个额外字母(两个FF),与我想要的结果相比。

实施例: 小数输入:-524288

正确的HEX输出我必须获得:FFF80000

在Excel中使用公式我得到:FFFFF80000 (我在HEX输出的开头加了2个FF)

另一个例子:

十进制输入:-29446758

应为FE3EAD9A

但在Excel中我得到了FFFE3EAD9A

似乎我总是在HEX输出中获得2个额外的FF。

有人可以解释(以一种简单的方式)为什么我得到2个额外的FF并且我是否可以安全地删除它们?

2 个答案:

答案 0 :(得分:4)

在Excel中,=DEC2HEX默认返回10个字符。

如果你想得到8,你的问题建议使用:

=DEC2HEX(A1,8)

然而,除非您遇到兼容性问题,否则您可能会保留默认号码。请记住,“F”字符作为填充字符用于负数(与“正数”的“0”相同)。

修改

正如您在评论中所述,上述内容未能出现否定因素。

以下作品:

=RIGHT(DEC2HEX(A1),8)

答案 1 :(得分:0)

我不太确定你在做什么,因为你没有包括你的公式。我的猜测是你正在使用这样的函数:

=DEC2HEX(A1)

虽然它有一个可选参数来控制返回多少位数,但当输入为负数时,这不起作用。

相反,你应该使用一些VBA:

Public Function DecToHex(val As Variant) As Variant

DecToHex = Hex(val)

End Function