【发布时间】:2021-07-13 21:04:13
【问题描述】:
长话短说,我正在尝试将十六进制值字符串转换为有符号 2 的补码整数。我能够在 Swift 中的一行代码中做到这一点,但由于某种原因,我在 Kotlin 中找不到类似的东西。 String.ToInt 或 String.ToUInt 只是给出直接以 16 为基数到以 10 为基数的转换。这适用于某些正值,但不适用于任何负数。
我怎么知道我想要带符号的 2 的补码?我使用了this online converter,根据它的输出,我想要的是带符号 2 的补码的小数,而不是简单的以 16 为基数到以 10 为基数的直接转换,这种转换很容易手动完成。
因此,“FFD6”应该变为 -42(正确,在 Swift 和 C# 中确认),“002A”应该转换为 42。
我将不胜感激任何帮助,甚至任何关于在哪里寻找的线索。因为是的,我已经搜索过了,我用谷歌搜索了很多问题,但没有找到好的答案。
我实际上尝试编写自己的代码来执行有符号 2 的补码,但到目前为止它并没有给我正确的答案,我很茫然。我真的希望有一个内置的命令来代替它;我觉得如果其他语言也有 Kotlin 应该具备的能力。
【问题讨论】: