java byte 梳理
生活随笔
收集整理的這篇文章主要介紹了
java byte 梳理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近寫編解碼的代碼比較多,抽一點(diǎn)時間梳理下java下byte的解析。在例子代碼中主要涉及的知識點(diǎn)就兩塊:
1、byte代表8個bit,其中最高位是符號位;
2、當(dāng)我們用String類的getBytes時,其實是默認(rèn)采用某種編解碼格式的,因此在例子中數(shù)字1被解析成49;
public class App {public static void main(String[] args) throws UnsupportedEncodingException {byte a = 11;//總共8位,第一位是符號位for(int i = 0; i < 8; i++){System.out.printf("%d ", a >> i & 0x01);}//1 1 0 1 0 0 0 0 System.out.println(" ");byte c = 0x11;for(int i = 0; i < 8; i++){System.out.printf("%d ", c >> i & 0x01);}//1 0 0 0 1 0 0 0 System.out.println(" ");byte b = 1;b |= 0x01 << 7;for(int i = 0; i < 8; i++){System.out.printf("%d ", b >> i & 0x01);}//1 0 0 0 0 0 0 1 System.out.println(" ");System.out.println(b);//-127System.out.println(" ");byte d = Byte.parseByte("A", 16);for(int i = 0; i < 8; i++){System.out.printf("%d ", d >> i & 0x01);}//0 1 0 1 0 0 0 0 System.out.println(" ");String i = Integer.toString(3);//3String j = Integer.toHexString(21);//15,采用16進(jìn)制表示21 System.out.printf("%s %s ", i, j);//3 15 System.out.println(" ");//getBytes一定采用某種編碼格式,若不填寫則采用操作系統(tǒng)默認(rèn)的格式byte[] data = j.getBytes("UTF-8");int ii = 0;int jj = 0;//在UTF-8編碼下1被編碼成49,注意不是十進(jìn)制四十九,而是十進(jìn)制四和九,同理編碼五為五三;for( ii = 0; ii < data.length; ii++){System.out.println(data[ii]);//49 53for( jj = 0; jj < 8; jj++){System.out.printf("%d ", data[ii] >> jj & 0x01);if(7 == jj){System.out.println(" ");}}//1 0 0 0 1 1 0 0 ---> 4 9 //1 0 1 0 1 1 0 0 ---> 5 3 }//for( ii = 0; ii < data.length; ii++){ } }?
轉(zhuǎn)載于:https://www.cnblogs.com/Fredric-2013/p/6605253.html
總結(jié)
以上是生活随笔為你收集整理的java byte 梳理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql计算用户平均下单周期
- 下一篇: 22 大端序和小端序