将字节(java数据类型)值转换为位(仅包含8位的字符串)

dav*_*XYZ 4 java byte

我需要将声明为字节数据类型的值转换为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
Run Code Online (Sandbox Code Playgroud)

如果没有内置方法,你能建议任何方法(可能是位移)吗?

Evg*_*eev 14

尝试

Integer.toBinaryString(b & 0xFF); 
Run Code Online (Sandbox Code Playgroud)

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

String s ="0b" + ("0000000" + Integer.toBinaryString(0xFF & b)).replaceAll(".*(.{8})$", "$1");
Run Code Online (Sandbox Code Playgroud)