實現String類型保存的二進制轉換為byte類型


String類型的二進制轉換為byte

/**
由於Ide 編碼問題,可能會出現顯示的值不是預期的 0x0f,0xff而是帶有正負的十進制
*這是由於顯示編碼原因,但實際上底層還是轉換為byte類型的對象,
可以使用js的new String('hex')查看
*/
String str =  "0000111111111111";
//將str轉換為10進制,這里要注意,由於int類型長度限制,str中最多存放三個八位二進制數
int parseInt = Integer.parseInt(str, 2);
//新建byte數組
byte[] bytes = new byte[8];
//定義數組變化長度變量
int j = 0;
/*
計算。
每8位算一個字節計算,可以看出是兩個byte字節
將二進制向右移動 8*(length-i-1)個位置,這樣相當於是 00001111 & 0xff 11111111 & 0xff
& 0xff為了保證是16進制
*/
for (int i = 0; i < str.length() / 8; i++) {
      byte byte_i = (byte)((parseInt >> 8*((str.length()/8)-i-1)) & 0xff);
      //賦值
      bytes[j] = byte_i;
      j++;
}
//上面是思路,下面是實現
 /**
     * 轉換算法
     * 傳輸過來的str為二進制8*8位
     * 需要將其按照每8位分割 分別計算
     * @param str 字符
     * @return 字節數組
     */
    private static byte[] getBytes(String str){
        // TODO 循環,每次處理8位
        int size = str.length()/8;
        //定義接收數組
        byte[] bytes = new byte[8];
        for (int i = 0; i < size; i++) {
            //每次截取8位計算
            String tmp = str.substring(8*i,8*(i+1));
            int tmpInt = Integer.parseInt(tmp,2);
            byte tmpByte = (byte)(tmpInt & 0xff);
            bytes[i] = tmpByte;
        }
        return bytes;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM