java中byte怎么转byte_java中byte(byte []), int的转换

socket通信时消息包头中包含的数据长度均用byte表示,那么int类型与byte之间的转换就成了需要研究的问题了。

int -> byte 可以直接使用强制类型转换: byte b = (byte) aInt;

这个操作是直接截取int中最低一个字节,如果int大于255,则值就会变得面目全非了。

对于通过InputStream.read()获取的int,可采用这个方法将值还原。

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;

}

int byte[]

代码转自:

public static byte[] toByteArray(int iSource, int iArrayLen) {

byte[] bLocalArr = new byte[iArrayLen];

for (int i = 0; (i < 4) && (i < iArrayLen); i++) {

bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF);

}

return bLocalArr;

}

// 将byte数组bRefArr转为一个整数,字节数组的低位是整型的低字节位

public static int toInt(byte[] bRefArr) {

int iOutcome = 0;

byte bLoop;

for (int i = 0; i < bRefArr.length; i++) {

bLoop = bRefArr[i];

iOutcome += (bLoop & 0xFF) << (8 * i);

}

return iOutcome;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值