“偏移”在编程环境中意味着什么?
这是指在开始还是在远处?
String.offsetByCodePoints(int index, int codePointOffset)
方法有什么作用?方法文档中“未配对的代理人”是什么意思?
答案 0 :(得分:2)
根据JavaDoc,
String.offsetByCodePoints(int index, int codePointOffset)
返回此对象中的索引 从{@code index}偏移 {@code codePointOffset}代码点。
以下是使用示例......
int num = 0;
num = "Test_String".offsetByCodePoints(0, 2); //num is 2
num = "Test_String".offsetByCodePoints(3, 2); //num is 5
num = "Test_String".offsetByCodePoints(9, 5); //Throws an exception since offset goes out-of-bounds
答案 1 :(得分:2)
一个来自维基百科的示例,假设您有一个字符串“ abcdef”,“ d”字符将从字符“ a”开始的偏移量为三。
答案 2 :(得分:2)
在编程环境中,“偏移”是什么意思?它是指开始还是相隔一段距离?
这意味着到某个给定位置的某种形式的距离。 (这意味着高度依赖于上下文。在这种情况下,偏移量是根据Unicode代码点位置“测量”的。)
String.offsetByCodePoints(int index, int codePointOffset)
方法有什么作用?
它计算特定char
在String
中的位置。 char
是Unicode代码点的第一个字符,它是codePointOffset
给定位置之后的index
个代码点。
index
和结果都是正常的字符串索引值;即它们是char
个职位。
要点...是,当您将String
视为Unicode代码点序列时,您的代码需要考虑到一个代码点可能包含1个或2个char
的事实值。
方法文档中的“未配对代理”是什么意思?
Java字符串表示作为Unicode代码点> 65535的字符,作为UTF-16替代字符。在格式正确的UTF-16字符串中,替代项成对出现,分别代表Unicode代码点的高位和低位。
这句话是说,如果String
包含未正确配对的替代词,它将把它们当作单独的代码点……以计数代码点为目的。
答案 3 :(得分:-1)
根据维基百科Offset (computer science)
数组或其他数据结构对象内的偏移量是一个整数,表示对象的开头与给定元素或点之间的距离(位移),大概在同一对象内。只有当对象的所有元素都具有相同的大小(通常以字节或字为单位)时,距离的概念才有效。
获取文件位置
您可以使用其 getFilePointer() 方法获取 Java RandomAccessFile 的当前位置。当前位置是 RandomAccessFile 当前所在字节的索引 (offset)。以下是使用 getFilePointer() 方法获取 RandomAccessFile 当前位置的示例:
以java中RandomAccessFile中的Offest为例:
RandomAccessFile randomAccessFile = new RandomAccessFile("data/data.txt", "r");
byte[] dest = new byte[1024];
int offset = 0;
int length = 1024;
int bytesRead = randomAccessFile.read(dest, offset, length);
此示例将字节序列读取到作为参数传递给 read() 方法的 dest 字节数组中。 read() 方法将从 RandomAccessFile 的当前文件位置开始读取文件。 read() 方法将从offset 参数 提供的数组位置开始写入字节数组,最多为length 参数提供的字节数。这个 read() 方法返回实际读取的字节数。