android中byte[] short[] int[] long[]數組資料轉換

來源:互聯網
上載者:User

android中byte[] short[] int[] long[]數組資料轉換

import java.nio.ByteOrder;public class BytesTransUtils { private String TAG = "BytesTransUtils"; private static BytesTransUtils instance = null; private BytesTransUtils() {  // Log.i(TAG, "instance BytesTransUtils"); } public static BytesTransUtils getInstance() {  if (instance == null) {  instance = new BytesTransUtils();  }    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;}   }  else {   for (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;   }  }  else {   for (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; }}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.