我正在寻找一个类似于 Java 在 Kotlin 中的Integer.toHexString()
函数。是否有内置的东西,或者我们必须手动编写一个函数来将Int
转换为String
?
您仍然可以通过在 java.lang.Integer
上调用静态函数来使用 Java 转换:
val hexString = java.lang.Integer.toHexString(i)
而且,从 Kotlin 1.1 开始,Kotlin 标准库中也有一个函数可以进行转换:
fun Int.toString(radix: Int): String
返回指定
radix
中此Int
值的字符串表示形式。
但是请注意,这仍然与 Integer.toHexString()
不同,因为后者执行无符号转换:
println((-50).toString(16)) // -32
println(Integer.toHexString(-50)) // ffffffce
但是对于实验性的 Kotlin 无符号类型,现在可以从负数无符号转换中获得与 Integer.toHexString(-50)
相同的结果:
println((-50).toUInt().toString(16)) // ffffffce
你可以简单地这样做: "%x".format(1234)
如果您需要在小于 10(十六进制)的字节之前添加零,例如您需要字符串 - "0E"然后使用: "%02x".format(14)
这是新的 Kotlin 1.9.0 标准库 HexFormat
:
(不要忘记在需要的地方添加@OptIn(ExperimentalStdlibApi::class)
)
val myHexFormat = HexFormat {
upperCase = false
number.prefix = "#"
number.removeLeadingZeros = true
}
val myInt = 0xb40e89
myInt.toHexString(myHexFormat) // #b40e89
您也可以使用 Kotlin 预定义的 HexFormat
:
val myInt = 0xb40e89
myInt.toHexString(HexFormat.Default) // 00b40e89
myInt.toHexString(HexFormat.UpperCase) // 00B40E89
<小时 />要从 ARGB 整数中排除 alpha,请执行以下解决方法:
(myInt and 0xFFFFFF).toHexString(myHexFormat)
并为此问题投票:使用 HexFormat 格式化时不能忽略 alpha