问题产生原因:
ROWID使用的编码表与ASCII编码表不同。下图为ROWID使用的编码表。
OracleChunkSplitter源码:获取byte[]部分需注意
ROWID getBytes()测试:
ROWID MAX = new ROWID("/");
byte[] bytes = MAX.getBytes();
for (byte aByte : bytes) {
System.out.println(aByte);
}
输出结果:47
由此判断采用的ASCII。
解决办法:
使用ROWID编码表获取byte[]用于计算。
认真到底,终有回响