我需要将声明为字节数据类型的值转换为8位字符串。有什么Java库方法可以做到这一点吗?例如,它应该接受-128并输出"10000000"。同样,输入-3应该得到"11111101"。(我手工转换的)
在你认为这个问题已经被回答了很多次之前,请让我解释一下我为什么困惑。
"byte"这个名字有点模棱两可。所以,我很难回答其他问题。对于我的问题,byte
是指java数据类型,占用8位,其值范围从-128到127。我也不是指"字节数组"。我的问题是关于将单个值仅转换为其8位表示。仅此而已。
我试过了:
byte b = -128; //i want 10000000
Integer.toBinaryString(b); //prints 11111111111111111111111110000000
Integer.toString(b, 2); //prints -10000000
如果没有内置的方法,你能建议任何方法(可能是位移位)吗?
Try
Integer.toBinaryString(b & 0xFF);
给出一个浮动长度格式,例如4
-> 100
。似乎没有标准解决方案来获得固定长度格式,即4
-> 00000100
。下面是一行自定义解决方案(前面加上0b
)
String s ="0b" + ("0000000" + Integer.toBinaryString(0xFF & b)).replaceAll(".*(.{8})$", "$1");