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