在短

时间:2016-03-13 22:26:45

标签: java binary byte bit short

如何在Java中用short替换多个位?

我正在使用加密算法,我需要执行以下操作: 我得到了一个简短的,需要应用一系列4位替换。 示例:如果前4位为0010,则将其替换为0110,如果其为1111,则将其替换为1100,依此类推,将其替换为后4位

最好/最快的方法是什么?目前我将短片转换为String并用String替换它,但它显然非常慢,在我看来是绝对错误的方式。

1 个答案:

答案 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));