如何在Kotlin中将Int转换为Char
使用Java原语,很容易将字符代码转换为符号如何在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
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中不起作用特林。