使用&;在java中将字节转换为整数;及|

使用&;在java中将字节转换为整数;及|,java,byte,data-conversion,Java,Byte,Data Conversion,我需要使用&和|将1字节转换为整数。转换后的输出必须是具有以下字节的整数:(0xFF)(byte)(byte)(byte) 例如: 输入: 00000111 输出: 11111111000001110000011100000111 如果字节在范围[0127] int integer=7; byte a=(byte)integer; int b=(0xFF<<24)|(a<<16)|(a<<8)|(a); System.out.println(Integ

我需要使用
&
|
将1字节转换为整数。转换后的输出必须是具有以下字节的整数:(0xFF)(byte)(byte)(byte)

例如:
输入:

00000111  
输出:

11111111000001110000011100000111
如果字节在范围
[0127]

int integer=7;
byte a=(byte)integer;
int b=(0xFF<<24)|(a<<16)|(a<<8)|(a);
System.out.println(Integer.toBinaryString(b));
错误输出:

11111111111111111111111110000000
预期产出:

11111111100000001000000010000000

发生这种情况的原因是,当您换档
a
时,前面只剩下
1
s

例如:


a试试这个。它基本上是作为左移,和,和或操作

byte a = (byte)240;
byte b = (byte)128;
byte c = 15;
int v = IntStream.of(0xFF, b, c, d).map(by-> by & 0xFF).reduce(0,
            (r, s) -> (r << 8) | s);

System.out.println(Integer.toBinaryString(v));
字节a=(字节)240;
字节b=(字节)128;
字节c=15;
intv=IntStream.of(0xFF,b,c,d).map(by->by&0xFF).reduce(0,

(r,s)->(r试试这个:
intb=(0xFFreplace
^
|
。我正在尝试XOR。试试这个
intb=(0xFF如果您解释了为什么扩展顶部位,这将是一个更好的答案。我在处理图像时使用该函数,希望避免使用该函数,因为该函数对于我的程序来说太慢。图像中的每个像素都是一个整数,并且在该整数中存储
ARGB
信息,如
aaaaaaaaaa rrrrrrrrrrggggggbbbbbbbbb
,以及在我的程序中,我需要
R=G=B,A=255
byte a = (byte)240;
byte b = (byte)128;
byte c = 15;
int v = IntStream.of(0xFF, b, c, d).map(by-> by & 0xFF).reduce(0,
            (r, s) -> (r << 8) | s);

System.out.println(Integer.toBinaryString(v));