4 java binary byte bit-manipulation
我试图将一个位插入一个字节数组,这会将字节数组中的所有位移到左边.
假设我有一个Java字节数组,如下所示:
byte[] byteArray = new byte[2];
byteArray[0] = 0x11
byteArray[1] = 0x00
Run Code Online (Sandbox Code Playgroud)
在二进制文件中,此字节数组表示为:
0001 0001 0000 0000
Run Code Online (Sandbox Code Playgroud)
现在我想在第三位位置插入一个零(丢失字节数组中的最后一位),结果是:
0000 1000 1000 0000
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法在Java中执行此操作?我知道BigInteger类可以将整个字节数组转换为二进制字符串(然后以这种方式插入并转换回来),但这似乎效率低下.
提前致谢.
棘手的一点是将字符移动到您实际想要插入位的位置,因为您只想移动它的一部分.这可以使用这样的函数来完成:
public static char shift(char in, char n, char v)
{
char lowMask = (1 << n) - 1;
char highMask = 0xFF ^ lowMask;
return (in & lowMask) | ((in & highMask) << 1) | ((v&1) << n);
}
Run Code Online (Sandbox Code Playgroud)
将位插入第一个字符后,您还必须移动阵列的其余部分.这可以通过简单地向右移一位(<< 1)并将下一个字符的最低有效位(LSB)设置为最后一个字符中最高有效位(MSB)的状态来完成.
| 归档时间: |
|
| 查看次数: |
8887 次 |
| 最近记录: |