java java 大端_Java 大小端转换

本文介绍了一个名为ByteConvert的Java类,主要关注int值的小端字节转换,包括Int2Bytes_LE方法,以及如何将String、字符数组转换为字节数组,以及字节数组转换回int和char。这些操作对于处理小端数据格式尤其有用。
摘要由CSDN通过智能技术生成

package nlp.nlp;

/**

* 小端数据,Byte转换

*

*/

public class ByteConvert {

public static void main(String[] args) {

ByteConvert c = new ByteConvert();

c.Int2Bytes_LE(126);

}

public static final int UNICODE_LEN = 2;

/**

* int转换为小端byte[](高位放在高地址中)

* @param iValue

* @return

*/

public byte[] Int2Bytes_LE(int iValue){

byte[] rst = new byte[4];

// 先写int的最后一个字节

rst[0] = (byte)(iValue & 0xFF);

// int 倒数第二个字节

rst[1] = (byte)((iValue & 0xFF00) >> 8 );

// int 倒数第三个字节

rst[2] = (byte)((iValue & 0xFF0000) >> 16 );

// int 第一个字节

rst[3] = (byte)((iValue & 0xFF000000) >> 24 );

return rst;

}

/**

* 转换String为byte[]

* @param str

* @return

*/

public byte[] String2Bytes_LE(String str) {

if(str == null){

return null;

}

char[] chars = str.toCharArray();

byte[] rst = Chars2Bytes_LE(chars);

return rst;

}

/**

* 转换字符数组为定长byte[]

* @param chars 字符数组

* @return 若指定的定长不足返回null, 否则返回byte数组

*/

public byte[] Chars2Bytes_LE(char[] chars){

if(chars == null)

return null;

int iCharCount = chars.length;

byte[] rst = new byte[iCharCount*UNICODE_LEN];

int i = 0;

for( i = 0; i < iCharCount; i++){

rst[i*2] = (byte)(chars[i] & 0xFF);

rst[i*2 + 1] = (byte)(( chars[i] & 0xFF00 ) >> 8);

}

return rst;

}

/**

* 转换byte数组为int(小端)

* @return

* @note 数组长度至少为4,按小端方式转换,即传入的bytes是小端的,按这个规律组织成int

*/

public int Bytes2Int_LE(byte[] bytes){

if(bytes.length < 4)

return -1;

int iRst = (bytes[0] & 0xFF);

iRst |= (bytes[1] & 0xFF) << 8;

iRst |= (bytes[2] & 0xFF) << 16;

iRst |= (bytes[3] & 0xFF)<< 24;

return iRst;

}

/**

* 转换byte数组为int(大端)

* @return

* @note 数组长度至少为4,按小端方式转换,即传入的bytes是大端的,按这个规律组织成int

*/

public int Bytes2Int_BE(byte[] bytes){

if(bytes.length < 4)

return -1;

int iRst = (bytes[0] << 24) & 0xFF;

iRst |= (bytes[1] << 16) & 0xFF;

iRst |= (bytes[2] << 8) & 0xFF;

iRst |= bytes[3] & 0xFF;

return iRst;

}

/**

* 转换byte数组为Char(小端)

* @return

* @note 数组长度至少为2,按小端方式转换

*/

public char Bytes2Char_LE(byte[] bytes){

if(bytes.length < 2)

return (char)-1;

int iRst = (bytes[0] & 0xFF);

iRst |= (bytes[1] & 0xFF) << 8;

return (char)iRst;

}

/**

* 转换byte数组为char(大端)

* @return

* @note 数组长度至少为2,按小端方式转换

*/

public char Bytes2Char_BE(byte[] bytes){

if(bytes.length < 2)

return (char)-1;

int iRst = (bytes[0] << 8) & 0xFF;

iRst |= bytes[1] & 0xFF;

return (char)iRst;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值