我必须承认,我从学校(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并且我是否可以安全地删除它们?
答案 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