如何在Java中用short替换多个位?
我正在使用加密算法,我需要执行以下操作:
我得到了一个简短的,需要应用一系列4位替换。
示例:如果前4位为0010
,则将其替换为0110
,如果其为1111
,则将其替换为1100
,依此类推,将其替换为后4位
最好/最快的方法是什么?目前我将短片转换为String并用String替换它,但它显然非常慢,在我看来是绝对错误的方式。
答案 0 :(得分:1)
比特算术,类似这样:
short s = 191;
short first = (short) (s & 0x000F);
short second = (short) ((s >> 4) & 0x000F);
short third = (short) ((s >> 8) & 0x000F);
short fourth = (short) ((s >> 12) & 0x000F);
call_the_method_to_convert_each();
s = fourth;
s = ((short) ((s << 4) | third));
s = ((short) ((s << 4) | second));
s = ((short) ((s << 4) | first));