java 对 字节的一些操作
1.将单个字节转换成二进制字符串
/**
* 把单个字节转换成二进制字符串
*/
public static String byteToBin(byte b) {
String zero = "00000000";
String binStr = Integer.toBinaryString(b & 0xFF);
if(binStr.length() < 8) {
binStr = zero.substring(0, 8 - binStr.length()) + binStr;
}
System.out.println(binStr);
return binStr;
}
2.获取单个字节中某一位bit
/**
* 获取单个字节中某一位bit的值,采用字符取值方式
*/
public static Integer getBitByByte(byte b, int index) {
if(index >= 8) { return null; }
String binStr = byteToBin(b);
return Integer.parseInt(String.valueOf(binStr.charAt(index)));
}
3.翻转byte
public static byte fzByte(byte b){
return (byte) ~b;
}
4. 将有符号的两个byte转成int
/**
* 将有符号的两个byte转成int
*
* 有符号的 二进制 在内存中 用补码表示。这里先是转换成原码(翻转 + 1),再求值。
*/
public static Integer getTwoByteToInt(byte[] b){
if (b.length != 2) return null;
return fzByte(b[0]) & 0xFF << 8 | (fzByte(b[1]) + 0x01) & 0xFF;
}
很少接触对byte、二进制、十六进制等等数据操作,做个记录。
有什么疑问可以评论,一起讨论。