将字节(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");