Java byte[]与short[]之间转换

直接上代码:

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;

import org.apache.log4j.Logger;

public class CommonUtil {
	private static Logger logger = Logger.getLogger(CommonUtil.class);
	
	public static short[] bytesToShort(byte[] bytes) {
		if(bytes==null){
			return null;
		}
		short[] shorts = new short[bytes.length/2];
		ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shorts);
	    return shorts;
	}
	public static byte[] shortToBytes(short[] shorts) {
		if(shorts==null){
			return null;
		}
		byte[] bytes = new byte[shorts.length * 2];
		ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().put(shorts);
		
	    return bytes;
	}	
	
	public static void main(String[] args) {
		byte[] ba = {21,32,45,98,46,85};
		short[] sa = bytesToShort(ba);
		byte[] bb = shortToBytes(sa);
		
		System.out.println("ba=" + Arrays.toString(ba) + ",sa=" + Arrays.toString(sa) + ",bb=" + Arrays.toString(bb));
	}
}

注意:代码里有大小端参数,小端 LITTLE_ENDIAN   大端BIG_ENDIAN,简单来说,大端模式就是存储器的高地址存放低字节;小端模式就是存储器的低地址存放低字节。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。由于这里是在X86机器上运行,所以选择小端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值