【发布时间】:2021-06-04 09:17:28
【问题描述】:
使用 Java 原语很容易将字符代码转换为符号
int i = 65;
char c = (char) i; // 'A'
如何用 Kotlin 做同样的事情?
【问题讨论】:
使用 Java 原语很容易将字符代码转换为符号
int i = 65;
char c = (char) i; // 'A'
如何用 Kotlin 做同样的事情?
【问题讨论】:
使用int.toChar() 函数来完成。
【讨论】:
128104.toChar() 没有给出想要的结果 (?)
Returns the Char with the numeric value equal to this number, truncated to 16 bits if appropriate.kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/to-char.html
首先使用 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)
}
【讨论】: