是否可以引用字节?



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

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

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

Java 和 Kotlin 中的等效项只是将索引存储到数组(或 String(中。

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

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

所以等效的是:

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

最新更新