最全面的Java位元組byte操作,處理Java基本資料的轉換及進位轉換操作工具,流媒體及java底層開發項目常用工具類

來源:互聯網
上載者:User

標籤:抽取   stat   nbsp   bytes   str   操作   位元組數組   無符號   有符號   

前言:用於處理Java基本資料的轉換及進位轉換操作工具

一、實現功能

1、int預byte互轉

2、int與byte[]互轉

3、short與byte互轉

4、short與byte[]互轉

5、16位short與byte[]互轉

6、long預byte[]互轉

7、byte[]與inputstream互轉

8、byte與String互轉

9、16進位字元轉int

10、十進位轉2進位

11、byte[]轉16進位字元

12、byte[]數組指定位置抽取byte[]

二、代碼實現

 

package cc.eguid.util;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.nio.ByteBuffer;/** * 基本資料互轉工具 * @author eguid * eguid的官網:www.eguid.cc * eguid的csdn部落格:http://blog.csdn.net/eguid_1,部落格園:http://www.cnblogs.com/eguid  */public class ByteUtil {private static ByteBuffer buffer = ByteBuffer.allocate(8); /**  * int轉byte  * @param x  * @return  */    public static byte intToByte(int x) {          return (byte) x;      }      /**     * byte轉int     * @param b     * @return     */    public static int byteToInt(byte b) {          //Java的byte是有符號,通過 &0xFF轉為無符號        return b & 0xFF;      }            /**     * byte[]轉int     * @param b     * @return     */    public static int byteArrayToInt(byte[] b) {          return   b[3] & 0xFF |                  (b[2] & 0xFF) << 8 |                  (b[1] & 0xFF) << 16 |                  (b[0] & 0xFF) << 24;      }    public static int byteArrayToInt(byte[] b, int index){      return   b[index+3] & 0xFF |                    (b[index+2] & 0xFF) << 8 |                    (b[index+1] & 0xFF) << 16 |                    (b[index+0] & 0xFF) << 24;      }    /**     * int轉byte[]     * @param a     * @return     */    public static byte[] intToByteArray(int a) {          return new byte[] {              (byte) ((a >> 24) & 0xFF),              (byte) ((a >> 16) & 0xFF),                 (byte) ((a >> 8) & 0xFF),                 (byte) (a & 0xFF)          };      }      /**      * short轉byte[]     *       * @param b      * @param s      * @param index      */      public static void byteArrToShort(byte b[], short s, int index) {          b[index + 1] = (byte) (s >> 8);          b[index + 0] = (byte) (s >> 0);      }    /**      * byte[]轉short      *       * @param b      * @param index      * @return      */      public static short byteArrToShort(byte[] b, int index) {          return (short) (((b[index + 0] << 8) | b[index + 1] & 0xff));      }    /**      * 16位short轉byte[]      *       * @param s      *            short      * @return byte[]     * */      public static byte[] shortToByteArr(short s) {          byte[] targets = new byte[2];          for (int i = 0; i < 2; i++) {              int offset = (targets.length - 1 - i) * 8;              targets[i] = (byte) ((s >>> offset) & 0xff);          }          return targets;      }    /**     * byte[]轉16位short     * @param b     * @return     */    public static short byteArrToShort(byte[] b){    return byteArrToShort(b,0);    }        /**     * long轉byte[]     * @param x     * @return     */    public static byte[] longToBytes(long x) {          buffer.putLong(0, x);          return buffer.array();      }      /**     * byte[]轉Long     * @param bytes     * @return     */    public static long bytesToLong(byte[] bytes) {          buffer.put(bytes, 0, bytes.length);          buffer.flip();//need flip           return buffer.getLong();      }    /**     * 從byte[]中抽取新的byte[]     * @param data - 中繼資料     * @param start - 開始位置     * @param end - 結束位置     * @return 新byte[]     */    public static byte[] getByteArr(byte[]data,int start ,int end){byte[] ret=new byte[end-start];for(int i=0;(start+i)<end;i++){ret[i]=data[start+i];} return ret;}/** * 流轉換為byte[] * @param inStream * @return */public static byte[] readInputStream(InputStream inStream) {ByteArrayOutputStream outStream = null;try {outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];byte[] data = null;int len = 0;while ((len = inStream.read(buffer)) != -1) {outStream.write(buffer, 0, len);}data = outStream.toByteArray();return data;}catch (IOException e) {return null;} finally {try {if (outStream != null) {outStream.close();}if (inStream != null) {inStream.close();}} catch (IOException e) {return null;}}}/** * byte[]轉inputstream * @param b * @return */public static InputStream readByteArr(byte[] b){return new ByteArrayInputStream(b);}/** * byte數組內數字是否相同 * @param s1 * @param s2 * @return */public static boolean isEq(byte[] s1,byte[] s2){int slen=s1.length;if(slen==s2.length){for(int index=0;index<slen;index++){if(s1[index]!=s2[index]){return false;}}return true;}return  false;}/** * byte數群組轉換為Stirng * @param s1 -數組 * @param encode -字元集 * @param err -轉換錯誤時返回該文字 * @return */public static String getString(byte[] s1,String encode,String err){try {return new String(s1,encode);} catch (UnsupportedEncodingException e) {return err==null?null:err;}}/** * byte數群組轉換為Stirng * @param s1-數組 * @param encode-字元集 * @return */public static String getString(byte[] s1,String encode){return getString(s1,encode,null);}//測試public static void main(String []args){System.err.println(isEq(new byte[]{1,2},new byte[]{1,2}));}/** * 位元組數組轉16進位字串 * @param b * @return */public static String byteArrToHexString(byte[] b){  String result="";  for (int i=0; i < b.length; i++) {    result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring(1);  }  return result;}/** * 16進位字元創轉int * @param hexString * @return */public static int hexStringToInt(String hexString){return Integer.parseInt(hexString,16);}/** * 十進位轉二進位 * @param i * @return */public static String intToBinary(int i){return Integer.toBinaryString(i);}}



最全面的Java位元組byte操作,處理Java基本資料的轉換及進位轉換操作工具,流媒體及java底層開發項目常用工具類

相關文章

聯繫我們

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