首页 > 解决方案 > 是否可以引用一个字节?

问题描述

在 C 中,可以创建一个数组并有一个指向该数组特定字节的指针,如下所示:

    char array[] = "This is not a question.";
    char *ptr = strchr(array, ' '); // points to the first space

这对于性能和解析时减少内存使用都非常有用,有时我创建的数据结构只指向同一缓冲区的不同字节。我想知道在 Kotlin 中做同样的事情是否方便和可能。

标签: kotlin

解决方案


Java 和 Kotlin 中的等价物只是将索引存储到数组(或字符串)中。

请记住,JVM 具有非常强大的动态编译和优化功能,因此虽然在 C 中效率较低,但在 JVM 上通常不会。(无论如何,在大多数应用程序中,差异通常不会很明显。)

另请注意,Kotlin 使用 Unicode,因此字符与字节不同。ACharacter是一个无符号的两字节数。(基本多语言平面之外的字符存储为代理对。)

所以等价的将是:

val string = "This is not a question."
val i = string.indexOf(' ') // = 4, index of the first space

或者

val array = byteArrayOf(1, 2, 3, 4, 5)
val i2 = array.indexOf(3) // = 2, index of the first occurrence of 3

推荐阅读