如何从按位运算编码的chunkID中解析出原始x、z坐标分量
解码实现方案
原理说明
你的编码逻辑是将32位有符号int类型的x、z坐标分别打包到64位long类型chunkID的不同比特段:
- 低32位存储x坐标经
& 0xffffffffL处理后得到的无符号32位值 - 高32位存储z坐标经
& 0xffffffffL处理后左移32位得到的值
反向解码只需要按位拆分对应比特段,再转回32位有符号int即可还原原始坐标,支持正负坐标正确解析。
解码代码(Java版本)
// 提取低32位得到x坐标 int chunkX = (int) (chunkID & 0xffffffffL); // 提取高32位得到z坐标,使用无符号右移避免符号位干扰 int chunkZ = (int) ((chunkID >>> 32) & 0xffffffffL);
注意事项
如果使用其他语言实现,需要对应使用无符号右移逻辑:比如C++中可以先将chunkID强转为uint64_t类型再右移32位,避免负数坐标解析出错。
内容的提问来源于stack exchange,提问作者user14732842
相关产品推荐
相关产品推荐

