java byte类型是如何自动转换成int类型的
classByteUShift{staticpublicvoidmain(Stringargs[]){charhex[]={'0','1','2','3','4','5'...
class ByteUShift
{ static public void main(String args[])
{ char hex[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
byte b=(byte)0xf1;
byte c=(byte)(b>>4);
byte d=(byte)(b>>>4);
byte e=(byte)((b&0xff)>>4);
System.out.println("b=0x"+hex[(b>>4)&0x0f]+hex[b&0x0f]);
System.out.println("b>>4=0x",hex[(c>>4)&0x0f]+hex[c&0x0f]);
System.out.println("b>>>4=0x"+hex[(d>>4)&0x0f]+hex[d&0x0f]);
System.out.println("(b&0xff)>>4=0x"+hex[(e>>4)&0x0f]+hex[e&0x0f]);
}
}
在这段代码中byte d=(byte)(b>>>4);
这一句书上说要先把b转换成int类型,在进行右移。但是b的代码是0xf1,既是11110001,请问它是如何转换成32位的int型的数据的,是在前面直接加24位1吗?
麻烦知道的详细解释下,好的话在追加10分,谢谢了 展开
{ static public void main(String args[])
{ char hex[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
byte b=(byte)0xf1;
byte c=(byte)(b>>4);
byte d=(byte)(b>>>4);
byte e=(byte)((b&0xff)>>4);
System.out.println("b=0x"+hex[(b>>4)&0x0f]+hex[b&0x0f]);
System.out.println("b>>4=0x",hex[(c>>4)&0x0f]+hex[c&0x0f]);
System.out.println("b>>>4=0x"+hex[(d>>4)&0x0f]+hex[d&0x0f]);
System.out.println("(b&0xff)>>4=0x"+hex[(e>>4)&0x0f]+hex[e&0x0f]);
}
}
在这段代码中byte d=(byte)(b>>>4);
这一句书上说要先把b转换成int类型,在进行右移。但是b的代码是0xf1,既是11110001,请问它是如何转换成32位的int型的数据的,是在前面直接加24位1吗?
麻烦知道的详细解释下,好的话在追加10分,谢谢了 展开
2个回答
推荐于2017-09-17 · 知道合伙人数码行家
关注
展开全部
java中byte转换为 int有两种情况,一种是要求保持值不变,例如进行数值计算,可采用强制类型转换:int i = (int) aByte;
另一种是要求保持最低字节中各个位不变,3个高字节全部用0填充,例如进行编解码操作,
则需要采用位操作:int i = b & 0xff;
int InputStream.read()
该函数返回一个int类型,范围从0至255,如果到达流末尾,返回-1。通过ByteArrayInputStream的源码可以看到是如何从byte转到int
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
注意,不是自动转的,需要强制做处理。
另一种是要求保持最低字节中各个位不变,3个高字节全部用0填充,例如进行编解码操作,
则需要采用位操作:int i = b & 0xff;
int InputStream.read()
该函数返回一个int类型,范围从0至255,如果到达流末尾,返回-1。通过ByteArrayInputStream的源码可以看到是如何从byte转到int
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
注意,不是自动转的,需要强制做处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询