如何在Kotlin中将Int转换为Char

如何在Kotlin中将Int转换为Char,kotlin,casting,Kotlin,Casting,使用Java原语,很容易将字符代码转换为符号 int i = 65; char c = (char) i; // 'A' 如何对Kotlin执行相同的操作?使用函数来执行此操作。首先使用ByteBuffer将Int转换为ByteArray(具有正确的字节顺序),然后使用适当的字符串构造函数 import java.nio.ByteBuffer import java.nio.ByteOrder import java.nio.charset.Charset fun intToByteArra

使用Java原语,很容易将字符代码转换为符号

int i = 65;
char c = (char) i; // 'A'

如何对Kotlin执行相同的操作?

使用函数来执行此操作。

首先使用ByteBuffer将Int转换为ByteArray(具有正确的字节顺序),然后使用适当的字符串构造函数

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)
}

但它将int截断为16位,因此
128104.toChar()
不会给出所需的结果(@fdermishin然后使用Long,而不是Int@david.barkhuizen这是行不通的。
返回的字符的数值等于这个数字,如果合适的话会被截断为16位。
@fdermishin同意。请参阅我的完整答案以获得正确的解决方案。从技术上讲,这个解决方案是针对使用Kotlin的Java的,在本机Ko中不起作用特林。