android byte[] 和short[]的轉換

來源:互聯網
上載者:User

 

1,工具代碼

 

public class BytesTransUtil {private String TAG = BytesTransUtil;private static BytesTransUtil instance = null;private BytesTransUtil() {// Log.i(TAG, instance BytesTransUtil);}public static BytesTransUtil getInstance() {if (instance == null) {instance = new BytesTransUtil();}return instance;}public boolean testCPU() {if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {// System.out.println(is big ending);return true;} else {// System.out.println(is little ending);return false;}}public byte[] getBytes(short s, boolean bBigEnding) {byte[] buf = new byte[2];if (bBigEnding)for (int i = buf.length - 1; i >= 0; i--) {buf[i] = (byte) (s & 0x00ff);s >>= 8;}elsefor (int i = 0; i < buf.length; i++) {buf[i] = (byte) (s & 0x00ff);s >>= 8;}return buf;}public byte[] getBytes(int s, boolean bBigEnding) {byte[] buf = new byte[4];if (bBigEnding) {for (int i = buf.length - 1; i >= 0; i--) {buf[i] = (byte) (s & 0x000000ff);s >>= 8;}} else {System.out.println(1);for (int i = 0; i < buf.length; i++) {buf[i] = (byte) (s & 0x000000ff);s >>= 8;}}return buf;}public byte[] getBytes(long s, boolean bBigEnding) {byte[] buf = new byte[8];if (bBigEnding)for (int i = buf.length - 1; i >= 0; i--) {buf[i] = (byte) (s & 0x00000000000000ff);s >>= 8;}elsefor (int i = 0; i < buf.length; i++) {buf[i] = (byte) (s & 0x00000000000000ff);s >>= 8;}return buf;}public short getShort(byte[] buf, boolean bBigEnding) {if (buf == null) {throw new IllegalArgumentException(byte array is null!);}if (buf.length > 2) {throw new IllegalArgumentException(byte array size > 2 !);}short r = 0;if (bBigEnding) {for (int i = 0; i < buf.length; i++) {r <<= 8;r |= (buf[i] & 0x00ff);}} else {for (int i = buf.length - 1; i >= 0; i--) {r <<= 8;r |= (buf[i] & 0x00ff);}}return r;}public int getInt(byte[] buf, boolean bBigEnding) {if (buf == null) {throw new IllegalArgumentException(byte array is null!);}if (buf.length > 4) {throw new IllegalArgumentException(byte array size > 4 !);}int r = 0;if (bBigEnding) {for (int i = 0; i < buf.length; i++) {r <<= 8;r |= (buf[i] & 0x000000ff);}} else {for (int i = buf.length - 1; i >= 0; i--) {r <<= 8;r |= (buf[i] & 0x000000ff);}}return r;}public long getLong(byte[] buf, boolean bBigEnding) {if (buf == null) {throw new IllegalArgumentException(byte array is null!);}if (buf.length > 8) {throw new IllegalArgumentException(byte array size > 8 !);}long r = 0;if (bBigEnding) {for (int i = 0; i < buf.length; i++) {r <<= 8;r |= (buf[i] & 0x00000000000000ff);}} else {for (int i = buf.length - 1; i >= 0; i--) {r <<= 8;r |= (buf[i] & 0x00000000000000ff);}}return r;}/*----------------------------------------------------------*//* 對轉換進行一個簡單的封裝 *//*----------------------------------------------------------*/public byte[] getBytes(int i) {return getBytes(i, this.testCPU());}public byte[] getBytes(short s) {return getBytes(s, this.testCPU());}public byte[] getBytes(long l) {return getBytes(l, this.testCPU());}public int getInt(byte[] buf) {return getInt(buf, this.testCPU());}public short getShort(byte[] buf) {return getShort(buf, this.testCPU());}public long getLong(byte[] buf) {return getLong(buf, this.testCPU());}/****************************************/public short[] Bytes2Shorts(byte[] buf) {byte bLength = 2;short[] s = new short[buf.length / bLength];for (int iLoop = 0; iLoop < s.length; iLoop++) {byte[] temp = new byte[bLength];for (int jLoop = 0; jLoop < bLength; jLoop++) {temp[jLoop] = buf[iLoop * bLength + jLoop];}s[iLoop] = getShort(temp);}return s;}public byte[] Shorts2Bytes(short[] s) {byte bLength = 2;byte[] buf = new byte[s.length * bLength];for (int iLoop = 0; iLoop < s.length; iLoop++) {byte[] temp = getBytes(s[iLoop]);for (int jLoop = 0; jLoop < bLength; jLoop++) {buf[iLoop * bLength + jLoop] = temp[jLoop];}}return buf;}/****************************************/public int[] Bytes2Ints(byte[] buf) {byte bLength = 4;int[] s = new int[buf.length / bLength];for (int iLoop = 0; iLoop < s.length; iLoop++) {byte[] temp = new byte[bLength];for (int jLoop = 0; jLoop < bLength; jLoop++) {temp[jLoop] = buf[iLoop * bLength + jLoop];}s[iLoop] = getInt(temp);System.out.println(2out->+s[iLoop]);}return s;}public byte[] Ints2Bytes(int[] s) {byte bLength = 4;byte[] buf = new byte[s.length * bLength];for (int iLoop = 0; iLoop < s.length; iLoop++) {byte[] temp = getBytes(s[iLoop]);System.out.println(1out->+s[iLoop]);for (int jLoop = 0; jLoop < bLength; jLoop++) {buf[iLoop * bLength + jLoop] = temp[jLoop];}}return buf;}/****************************************/public long[] Bytes2Longs(byte[] buf) {byte bLength = 8;long[] s = new long[buf.length / bLength];for (int iLoop = 0; iLoop < s.length; iLoop++) {byte[] temp = new byte[bLength];for (int jLoop = 0; jLoop < bLength; jLoop++) {temp[jLoop] = buf[iLoop * bLength + jLoop];}s[iLoop] = getLong(temp);}return s;}public byte[] Longs2Bytes(long[] s) {byte bLength = 8;byte[] buf = new byte[s.length * bLength];for (int iLoop = 0; iLoop < s.length; iLoop++) {byte[] temp = getBytes(s[iLoop]);for (int jLoop = 0; jLoop < bLength; jLoop++) {buf[iLoop * bLength + jLoop] = temp[jLoop];}}return buf;}}

2,測試代碼

 

 

public class main {public static void main(String[] args) {// TODO Auto-generated method stub//簡單測試了short[] 轉byte[],其他類似;BytesTransUtil bytesTransUtil = BytesTransUtil.getInstance();int[] sTest = { 12345678, 87654321 };byte[] byteShort = bytesTransUtil.Ints2Bytes(sTest);int[] sTemp = bytesTransUtil.Bytes2Ints(byteShort);System.out.println(short[0] =  + sTemp[0] +    short[1] =  + sTemp[1]);}}


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.