4

我需要将声明为字节数据类型的值转换为 8 位字符串。是否有任何 Java 库方法可以做到这一点?例如,它应该输入 -128 并输出“10000000”。此外,输入 -3 应该给出“11111101”。(我手动转换了这些。)

在您认为这已被多次回答之前,请让我解释一下为什么我感到困惑。

“字节”这个名字有点模棱两可。因此,很难遵循其他答案。对于我的问题,byte指的是占用 8 位并且其值范围从 -128 到 127 的java 数据类型。我也不是指“字节数组”。我的问题是将单个值仅转换为其 8 位表示。而已。

我试过这些:

byte b = -128;  //i want 10000000
Integer.toBinaryString(b); //prints 11111111111111111111111110000000
Integer.toString(b, 2); //prints -10000000

如果没有内置方法,您能否提出任何方法(可能是位移)?

4

1 回答 1

14

尝试

Integer.toBinaryString(b & 0xFF); 

这给出了一个浮动长度格式,例如4-> 100。似乎没有获得固定长度格式的标准解决方案,即4-> 00000100。这是一个单行自定义解决方案(前面带有0b

String s ="0b" + ("0000000" + Integer.toBinaryString(0xFF & b)).replaceAll(".*(.{8})$", "$1");
于 2013-01-16T17:22:22.993 回答