kotlin - 是否可以引用一个字节?
问题描述
在 C 中,可以创建一个数组并有一个指向该数组特定字节的指针,如下所示:
char array[] = "This is not a question.";
char *ptr = strchr(array, ' '); // points to the first space
这对于性能和解析时减少内存使用都非常有用,有时我创建的数据结构只指向同一缓冲区的不同字节。我想知道在 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
推荐阅读
- css - 背景渐变不透明度不适用于样式化组件
- c# - 将图像从 SQL Server 绑定到 ASP.NET 中的中继器未加载?
- python - 想在 pyttsx3 中将声音更改为 Siri 男性
- javascript - 使用 JSON 反应生成表
- reactjs - 在与material-ui反应中创建嵌套导航菜单
- python - Django - 较大的文件无法上传到heroku
- sapui5 - 如何使用 typeInstance 而不是在 p13n 对话框中输入?
- xamarin.forms - Stacklayout 在按钮单击时删除
- git - Jenkins Multibranch 项目致命:不明确的参数“上游/主”:未知修订或路径不在工作树中。用于 PR 构建
- android - 您如何修复 Firebase 存储异常?