“偏移”在编程环境中意味着什么?

时间:2010-10-19 18:47:29

标签: java string offset

“偏移”在编程环境中意味着什么?

这是指在开始还是在远处?

String.offsetByCodePoints(int index, int codePointOffset)方法有什么作用?方法文档中“未配对的代理人”是什么意思?

4 个答案:

答案 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”开始的偏移量为三。

Offset (computer science)

答案 2 :(得分:2)

在编程环境中,“偏移”是什么意思?它是指开始还是相隔一段距离?

这意味着到某个给定位置的某种形式的距离。 (这意味着高度依赖于上下文。在这种情况下,偏移量是根据Unicode代码点位置“测量”的。)

String.offsetByCodePoints(int index, int codePointOffset)方法有什么作用?

它计算特定charString中的位置。 char是Unicode代码点的第一个字符,它是codePointOffset给定位置之后的index个代码点。

index和结果都是正常的字符串索引值;即它们是char个职位。

要点...是,当您将String视为Unicode代码点序列时,您的代码需要考虑到一个代码点可能包含1个或2个char的事实值。

方法文档中的“未配对代理”是什么意思?

Java字符串表示作为Unicode代码点> 65535的字符,作为UTF-16替代字符。在格式正确的UTF-16字符串中,替代项成对出现,分别代表Unicode代码点的高位和低位。

这句话是说,如果String包含未正确配对的替代词,它将把它们当作单独的代码点……以计数代码点为目的。

另请参阅:What is a "surrogate pair" in Java?

答案 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() 方法返回实际读取的字节数。

相关问题