mos*_*r67 2 excel hex programming-languages
我必须承认我不太记得学校里的 HEX 等(25 年前)。无论如何,我有一些十进制格式的值需要转换为十六进制。我正在使用 Excel,但如有必要,我可以在 VBA 中编写一个函数(或通过 VB.NET 中的代码来编写)。
我已经知道十六进制结果应该是什么样子(另一个来源),但我需要使用 Excel 来准确地获得这个结果。十进制输入的来源以及(右)十六进制结果的结果来自 Linux 系统,如果这很重要的话。
正数似乎被正确转换,而负数让我头疼,因为与我想要的结果相比,Excel 在 HEX 的 beinning 中添加了两个额外的字母(两个 FF)。
示例:十进制输入:-524288
我必须获得正确的十六进制输出:FFF80000
在 Excel 中使用公式我得到:FFFFF80000(在十六进制输出的开头我得到了 2 FF)
另一个例子:
十进制输入:-29446758
应该是FE3EAD9A
但在 Excel 中我得到 FFFE3EAD9A
似乎我总是在十六进制输出中获得 2 个额外的 FF。
有人可以(以简单的方式)解释为什么我会得到 2 个额外的 FF 以及我是否可以安全地移除它们?
在 Excel 中,=DEC2HEX
默认情况下返回 10 个字符。
如果您只想获得 8,请按照您的问题建议使用:
=DEC2HEX(A1,8)
Run Code Online (Sandbox Code Playgroud)
尽管如此,除非您有兼容性问题,否则您可以保留默认数字。请记住,“F”字符用作负数作为填充字符(与“0”用于正数的方式相同)。
编辑
正如您在评论中所述,上述内容对于负面影响是失败的。
以下工作:
=RIGHT(DEC2HEX(A1),8)
Run Code Online (Sandbox Code Playgroud)