我正在寻找在Kotlin中类似于Java的
Integer.toHexString()
的功能。是否有内置的方法,还是我们需要手动编写一个将Int
转换为String
的函数?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
将这个
Int
值以指定的radix
进制表示为字符串。
需要注意的是,这仍然与 Integer.toHexString()
不同,因为后者执行的是无符号转换:
println((-50).toString(16)) // -32
println(Integer.toHexString(-50)) // ffffffce
然而,使用实验性的Kotlin 无符号类型,现在可以从将负数转换为无符号数获得与Integer.toHexString(-50)
相同的结果:
println((-50).toUInt().toString(16)) // ffffffce
Integer.toHexString()
相同的结果:(-50).toLong().toString(16)
返回 ffffffce
。此外,现在还有 UInt
和 ULong
,所以对于长整型,你可以使用 toULong().toString(16)
。 - Tenfour04"%x".format(1234)
"%X".format(1234)
。请注意,这不会改变原始数据的含义。 - Dhiraj Gupta"%02x".format(14)
。HexFormat
:@OptIn(ExperimentalStdlibApi::class)
)val myHexFormat = HexFormat {
upperCase = false
number.prefix = "#"
number.removeLeadingZeros = true
}
val myInt = 0xb40e89
myInt.toHexString(myHexFormat) // #b40e89
HexFormat
。val myInt = 0xb40e89
myInt.toHexString(HexFormat.Default) // 00b40e89
myInt.toHexString(HexFormat.UpperCase) // 00B40E89
(myInt and 0xFFFFFF).toHexString(myHexFormat)
并投票支持此问题:在使用HexFormat格式化时不能忽略alpha通道
Integer.toHexString()
- 例如,可以看一下 @hotkey 在下面提供的答案。这个方法简短且可以直接从任何 Int 访问。我可以使用任何东西来完成我的任务,但如果有类似 Kotlin 的东西就更好了。 - milosmnstoString(radix: Int)
函数仍然会有所不同,因为在Integer.toHexString()
中使用了无符号转换,所以它可能并不适合您。 - hotkeyfun Int.toHexString() = Integer.toHexString(this)
- JB Nizet