我将从外部输入获取一个
因此,字节和值看起来像这样(每个[]都是一个
byte[]
,其中每个字节存储两个4位值。我的任务是从这个紧密打包的数组中读取索引idx的4位值。我从未编写过这样的代码,所以我想知道我的以下解决方案是否正确,如果是,是否有更优化的方法来完成它。(请不要让我听到“为什么不自己测试”的评论;测试无法证明某些东西的正确性,只能证明错误...)。因此,字节和值看起来像这样(每个[]都是一个
byte
):[value0|value1] [value2|value3] [value4|value5] [value6|value7]
我需要取得索引为idx
的值。很明显:
- 如果 i 是偶数,表达式是:
array[idx/2] & 0xF0
- 如果 i 是奇数,表达式是:
array[idx/2] & 0x0F
因此代码如下:
if (idx % 2 == 0) {
return array[idx/2] & 0xF0;
}
return array[idx/2] & 0x0F;
这是正确且最优的吗?
更新针对“快速”阅读者:这不是正确的,请参见答案。