使用Java原始类型将字符代码转换为符号很容易
int i = 65;
char c = (char) i; // 'A'
如何使用 Kotlin 实现相同的功能?
首先使用 ByteBuffer 将 Int 转换为 ByteArray(使用正确的字节顺序),然后使用适当的 String 构造函数。
import java.nio.ByteBuffer
import java.nio.ByteOrder
import java.nio.charset.Charset
fun intToByteArray(n: Int, byteOrder: ByteOrder) =
ByteBuffer.allocate(4).order(byteOrder).putInt(n).array()
fun byteArrayToUnicode(ba: ByteArray, charSet: Charset) =
String(ba, charSet)
fun intToUniCode(n: Int, byteOrder: ByteOrder, charSet: Charset) =
byteArrayToUnicode(intToByteArray(n, byteOrder), charSet)
fun test() {
val charSet = Charset.forName("UTF-32BE")
val n = 0x000000f7 // division sign (U+00F7)
val s = intToUniCode(n, ByteOrder.BIG_ENDIAN, charSet)
println(s)
}
128104.toChar()
无法得到期望的结果。 - fdermishin返回具有与该数字相等的数值的Char,如果适当,则截断为16位。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/to-char.html - fdermishin