精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

似乎你總也記不住,byte取值范圍是 -127~128 還是 -128~127

開發 前端
因為java語言與一些其他語言byte的取值范圍不同,所以在有時候處理一些文件時候需要進行進制轉換。

一、前言介紹

無論在面試過程中還是平時的技術交流中,似乎有很多小伙伴始終記不住java中byte類型的取值范圍是多少。究其原因大部分程序員對這個取值范圍是不在意的,因為知道與不知道都不影響你完成工作。另外這種知識點壓根不是讓你死記硬背的,當然如果你是從其他文科專業轉過來學編程開發的,還情有可原。但對一個理科生來說,就不太應該了。

二、取值范圍計算

在java中,byte占1個字節,8比特位,可以想象成8個小塊的數據區間,首位用0、1代表符號位。**0[正]、1[負]**,那么繪制出一個表格如下;

byte 序號 8 7 6 5 4 3 2 1 2? 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 值 128 64 32 16 8 4 2 1 +127 0 1 1 1 1 1 1 1 -128 1 0 0 0 0 0 0 0

+127 二進制求和

  2^0+2^1+2^2+2^3+2^4+2^5+2^6+2^7
= 2^(n+1) - 1
= 127

-128 二進制求和

  2^8
= 128

好了,現在看懂邏輯就很清晰了,為什么是負數到-128,因為1代表負數的符號位,也就整整好好是2的8次方,-128。

三、進制數值轉換

因為java語言與一些其他語言byte的取值范圍不同,所以在有時候處理一些文件時候需要進行進制轉換。也就是 -128~127 與 0~255 的轉換處理;

比如我們現在將一個java中byte=120,轉換成 0~255取值范圍的數值;

一般可以進行與運算;

120 & 0x0FF

同時還可以進行增位運算;(也就是將8個字節長度的內容,放到16個長度中,進行轉換)

byte[] val = {-120};
BigInteger bigInteger = new BigInteger(1, val);
//有符號
System.out.println(bigInteger.byteValue());
//無符號(增位)
String str_hex = bigInteger.toString(16);
System.out.println(Integer.parseInt(str_hex, 16)); // 136

四、解析一段class字節碼

java的類文件都會被編譯成class文件,那么class文件需要經過jvm的解析、驗證,加載等處理才可以被虛擬機的指令執行操作。

如果下是一段class文件的byte數組,將內容解析出對應的結果;

public class ClassReaderTest {

//取部分字節碼:java.lang.String
private static byte[] classData = {
-54, -2, -70, -66, 0, 0, 0, 52, 2, 26, 3, 0, 0, -40, 0, 3, 0, 0, -37, -1, 3, 0, 0, -33, -1, 3, 0, 1, 0, 0, 8, 0,
59, 8, 0, 83, 8, 0, 86, 8, 0, 87, 8, 0, 110, 8, 0, -83, 8, 0, -77, 8, 0, -49, 8, 0, -47, 1, 0, 3, 40, 41, 73, 1,
0, 20, 40, 41, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 79, 98, 106, 101, 99, 116, 59, 1, 0, 20, 40, 41,
76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 1, 0, 3, 40, 41, 86, 1, 0, 3,
40, 41, 90, 1, 0, 4, 40, 41, 91, 66, 1, 0, 4, 40, 41, 91, 67, 1, 0, 4, 40, 67, 41, 67, 1, 0, 21, 40, 68, 41, 76,
106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 1, 0, 4, 40, 73, 41, 67, 1, 0, 4};

public static void main(String[] args) {

//classData是我們的字節碼,第一是-54,因為byte取值范圍是-128~+127,所以如果想看到和其他虛擬機一樣的值,需要進行與運算。
System.out.println("* byte字節碼與運算原值(-54)換行后(-54 & 0x0FF):" + (-54 & 0x0FF));

//校驗魔數
readAndCheckMagic();

//校驗版本號
readAndCheckVersion();

//接下來會依次讀取[可以參照java版本虛擬機代碼];constantPool、accessFlags、thisClassIdx、supperClassIdx、interfaces、fields、methods、attributes
}

/**
* 校驗魔數
* <p>
* 很多文件格式都會規定滿足該格式的文件必須以某幾個固定字節開頭,這幾個字節主要起到標識作用,叫作魔數(magic number)。
* 例如;
* PDF文件以4字節“%PDF”(0x25、0x50、0x44、0x46)開頭,
* ZIP文件以2字節“PK”(0x50、0x4B)開頭
* class文件以4字節“0xCAFEBABE”開頭
*/
private static void readAndCheckMagic() {
System.out.println("\r\n------------ 校驗魔數 ------------");
//從class字節碼中讀取前四位
byte[] magic_byte = new byte[4];
System.arraycopy(classData, 0, magic_byte, 0, 4);

//將4位byte字節轉成16進制字符串
String magic_hex_str = new BigInteger(1, magic_byte).toString(16);
System.out.println("magic_hex_str:" + magic_hex_str);

//byte_magic_str 是16進制的字符串,cafebabe,因為java中沒有無符號整型,所以如果想要無符號只能放到更高位中
long magic_unsigned_int32 = Long.parseLong(magic_hex_str, 16);
System.out.println("magic_unsigned_int32:" + magic_unsigned_int32);

//魔數比對,一種通過字符串比對,另外一種使用假設的無符號16進制比較。如果使用無符號比較需要將0xCAFEBABE & 0x0FFFFFFFFL與運算
System.out.println("0xCAFEBABE & 0x0FFFFFFFFL:" + (0xCAFEBABE & 0x0FFFFFFFFL));

if (magic_unsigned_int32 == (0xCAFEBABE & 0x0FFFFFFFFL)) {
System.out.println("class字節碼魔數無符號16進制數值一致校驗通過");
} else {
System.out.println("class字節碼魔數無符號16進制數值一致校驗拒絕");
}

}

/**
* 校驗版本號
* <p>
* 魔數之后是class文件的次版本號和主版本號,都是u2類型。假設某class文件的主版本號是M,次版本號是m,那么完整的版本號可以
* 表示成“M.m”的形式。次版本號只在J2SE 1.2之前用過,從1.2開始基本上就沒有什么用了(都是0)。主版本號在J2SE 1.2之前是45,
* 從1.2開始,每次有大版本的Java版本發布,都會加1{45、46、47、48、49、50、51、52}
*/
private static void readAndCheckVersion() {
System.out.println("\r\n------------ 校驗版本號 ------------");

//從class字節碼第4位開始讀取,讀取2位
byte[] minor_byte = new byte[2];
System.arraycopy(classData, 4, minor_byte, 0, 2);
//將2位byte字節轉成16進制字符串
String minor_hex_str = new BigInteger(1, minor_byte).toString(16);
System.out.println("minor_hex_str:" + minor_hex_str);
//minor_unsigned_int32 轉成無符號16進制
int minor_unsigned_int32 = Integer.parseInt(minor_hex_str, 16);
System.out.println("minor_unsigned_int32:" + minor_unsigned_int32);

//從class字節碼第6位開始讀取,讀取2位
byte[] major_byte = new byte[2];
System.arraycopy(classData, 6, major_byte, 0, 2);
//將2位byte字節轉成16進制字符串
String major_hex_str = new BigInteger(1, major_byte).toString(16);
System.out.println("major_hex_str:" + major_hex_str);
//major_unsigned_int32 轉成無符號16進制
int major_unsigned_int32 = Integer.parseInt(major_hex_str, 16);
System.out.println("major_unsigned_int32:" + major_unsigned_int32);

System.out.println("版本號:" + major_unsigned_int32 + "." + minor_unsigned_int32);

}

}

測試結果:

* byte字節碼與運算原值(-54)換行后(-54 & 0x0FF):202

------------ 校驗魔數 ------------
magic_hex_str:cafebabe
magic_unsigned_int32:3405691582
0xCAFEBABE & 0x0FFFFFFFFL:3405691582
class字節碼魔數無符號16進制數值一致校驗通過

------------ 校驗版本號 ------------
minor_hex_str:0
minor_unsigned_int32:0
major_hex_str:34
major_unsigned_int32:52
版本號:52.0

Process finished with exit code 0

五、綜上總結

  • 關于byte在文章;《用java實現jvm虛擬機》中講過,但是沒有單獨拿出來分析,現在單獨分析下也增強記憶。
  • 任何一個可能不起眼的知識點,不是他不重要,而是你還沒有用到。就像有句話說,不是讀書沒用,而是你沒用。國語博大精深!
  • 認認真真對待每一個知識點,不斷的夯實自己的地基,這就像是蓋房子在打地基一樣。越深越穩,最終所服能于你的上層架構才會更加精進。?
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2016-12-22 18:38:49

JavaAndroid

2020-07-07 07:37:36

Integer源碼Java

2024-03-13 13:10:48

JavaInteger緩存

2025-10-29 12:10:00

Docker云原生運維

2024-10-28 21:06:54

2024-11-15 10:53:56

Java編程語言

2022-08-08 08:48:14

算法偽代碼解決問題

2024-04-18 08:51:10

原碼反碼補碼

2021-02-05 05:26:33

字節ASCII控制

2021-06-28 08:17:32

ORM框架Docker

2025-06-12 00:00:00

int (1)int (10)面試

2021-10-13 06:49:13

Integer 阿里巴巴包裝類

2011-05-30 09:24:18

服務器

2021-07-22 23:19:07

手機內存存儲

2017-11-02 13:15:18

Linux

2020-08-18 10:32:58

MYSQL知識數據庫

2010-06-02 14:40:11

IPv6協議地址

2011-11-04 09:52:28

蘋果筆記本

2017-12-28 10:26:31

系統CPU64位

2021-09-08 14:48:33

手機內存技術
點贊
收藏

51CTO技術棧公眾號

亚洲人亚洲人成电影网站色| 日韩电影在线一区二区| 亚洲第一精品夜夜躁人人爽 | 欧美吻胸吃奶大尺度电影| 在线观看一区二区三区三州| 国产av无码专区亚洲av| 亚洲黄色视屏| 一区二区中文字幕| 91成人在线观看喷潮蘑菇| 精品国产免费人成网站| 国产欧美日韩卡一| 国产高清在线一区二区| 中文字幕免费播放| 亚洲三级视频| 久久精品国产精品亚洲| 成年人在线观看av| 视频免费一区二区| 欧美日韩国产另类一区| 免费 成 人 黄 色| 99热国产在线中文| 99久久精品国产导航| 91情侣偷在线精品国产| 国产成人无码av| 伊人久久亚洲热| 欧美成在线观看| www久久久久久久| 林ゆな中文字幕一区二区| 91精品国产综合久久精品| 四虎永久在线精品无码视频| segui88久久综合| 亚洲视频一区二区免费在线观看| 茄子视频成人在线观看| 色综合免费视频| 国产成人啪免费观看软件| 国产精品一区二区三区成人| 日本高清不卡码| 亚洲精品123区| 欧美成人在线影院| 一区二区三区四区五区| 久久视频精品| 中文字幕视频一区二区在线有码| 中文字幕国产综合| 日韩欧美影院| 亚洲黄色视屏| 99精品视频一区二区| 91久久精品美女高潮| 亚洲高清在线看| 视频一区二区中文字幕| 欧洲永久精品大片ww免费漫画| 国产精彩视频在线观看| 雨宫琴音一区二区在线| 欧美不卡视频一区发布| www.av成人| 91av精品| 欧美黄色www| 免费在线黄色片| 国产精品第十页| 色综合天天狠天天透天天伊人| 黄色一级片在线| 黄色在线一区| 性欧美亚洲xxxx乳在线观看| 国产精品成人国产乱| 在线亚洲观看| 57pao精品| 黄色一级视频免费看| 日本中文字幕不卡| 国产日韩一区在线| 国产欧美久久久| 国产成人精品一区二区三区网站观看 | 欧美日韩在线播放三区| 欧美一级xxxx| 91精品啪在线观看国产爱臀| 亚洲精品99久久久久| 国产呦小j女精品视频| 欧美另类69xxxxx| www.亚洲成人| 久久精品亚洲无码| 噜噜噜在线观看免费视频日韩| 国产成人在线一区| 国产婷婷在线视频| 99r国产精品| 日韩成人在线资源| 中文字幕资源网在线观看| 亚洲国产精品久久久久秋霞影院| 大j8黑人w巨大888a片| 欧美日韩五区| 日韩精品一区二区三区四区 | 成人精品影院| 欧美精品在线极品| 香蕉影院在线观看| 韩国精品一区二区| 精品无人区一区二区三区| www免费网站在线观看| 一区二区三区不卡视频 | 精品中文字幕一区二区小辣椒| 91久久极品少妇xxxxⅹ软件 | 菁菁伊人国产精品| 中文字幕日韩欧美在线| 久久久久久久久精| 日韩成人一区二区| 国产精品一区二区三区精品| 番号在线播放| 亚洲国产wwwccc36天堂| 亚洲久久中文字幕| 日韩激情网站| 久久夜色精品国产亚洲aⅴ| 国产午夜免费福利| 国产高清成人在线| 图片区小说区区亚洲五月| 麻豆av在线播放| 欧美日韩在线直播| 在线观看av中文字幕| 91综合久久| 热久久这里只有| 亚洲精品国产精| 中文字幕一区二区三区四区| 国产综合免费视频| 美女视频免费精品| 色综合色综合久久综合频道88| 在线免费看91| 国产亚洲午夜高清国产拍精品 | 日本欧美韩国一区三区| 精品免费国产| 久草在线资源站资源站| 制服丝袜在线91| 日韩一区二区三区四区视频| 久久久一二三| 美女亚洲精品| 麻豆成全视频免费观看在线看| 日韩一区二区三区四区| 肉色超薄丝袜脚交69xx图片 | 国内精品久久久久久久影视蜜臀| 国产区亚洲区欧美区| 国产对白叫床清晰在线播放| 精品人伦一区二区三区蜜桃网站| 成人做爰69片免费| 欧美日韩视频| 999国内精品视频在线| 男女啪啪在线观看| 欧美福利视频导航| 黄色录像免费观看| 国产美女在线观看一区| 91免费视频黄| 久久99成人| 欧美大片第1页| 国产成人手机在线| 偷窥国产亚洲免费视频| 免费的av网站| 国产精品日韩久久久| 久久精品国产精品国产精品污| 182在线视频观看| 亚洲精品国产精品久久清纯直播 | 国产色在线观看| 欧美一级xxx| 精品无码免费视频| 99久久精品国产麻豆演员表| 黄色a级片免费| 国产一区二区观看| 国产欧美一区二区三区四区| 日本视频在线播放| 日韩视频123| 日本在线视频免费| 26uuu亚洲综合色| 午夜视频在线瓜伦| 波多野结衣的一区二区三区| 国产一区二区丝袜| 天堂av资源在线观看| 亚洲二区中文字幕| 免费无码国产精品| 日韩理论片网站| 国产av一区二区三区传媒| 99亚洲精品| 午夜精品一区二区三区在线观看 | 电影午夜精品一区二区三区| 国产福利电影在线播放| 亚洲免费一级电影| 91片黄在线观看喷潮| 亚洲自拍另类综合| 国产特级黄色录像| 国产一区二三区| 成人av一级片| 97色伦图片97综合影院| 国产精品久久波多野结衣| 午夜精品成人av| 久久精品国产一区二区电影| 日韩中文字幕免费观看| 欧美在线短视频| 国产一级免费观看| 国产亚洲欧美中文| 妖精视频在线观看| 三级欧美韩日大片在线看| 四虎影院一区二区| 美女精品一区最新中文字幕一区二区三区 | 久久久久久久久久综合| 久久久一区二区三区| 日本高清一区二区视频| 亚洲免费影视| 欧美乱做爰xxxⅹ久久久| 亚洲日产av中文字幕| 亚洲aaaaaa| 高清电影一区| 久久久视频在线| 青青青青在线| 亚洲免费伊人电影在线观看av| 精品国产一级片| 欧美亚洲动漫另类| 99热只有这里有精品| 亚洲欧美一区二区三区极速播放| 亚洲做受高潮无遮挡| 成人自拍视频在线| 亚洲免费黄色录像| 日韩不卡一二三区| 91视频最新入口| 欧美色图首页| 精品少妇人妻av一区二区| 国产成人精品免费视| 国外成人免费视频| 免费一区二区三区在线视频| 国产精品久久一| 欧美日韩视频网站| 久久久欧美一区二区| 午夜影院免费在线| 日韩视频在线免费| 成在在线免费视频| 亚洲视频在线观看视频| 在线观看xxx| 欧美精品一区二区三区蜜桃 | 影音先锋成人资源网站| 欧美色婷婷久久99精品红桃| 久久久免费看| 欧美福利在线播放网址导航| 99视频国产精品免费观看| 成人国产精品久久| 91久久久久久久久久久久久| 国产成人精品一区二区三区在线| 日韩av手机在线看| 日韩av中字| 日产精品久久久一区二区福利| 欧美调教sm| 欧美亚洲成人xxx| 中文在线а√天堂| 日韩av男人的天堂| 欧美日韩视频免费观看| 国产精品第2页| 成人免费在线观看视频| 国产女精品视频网站免费| 欧美黑粗硬大| 亚洲a级在线观看| 欧洲精品99毛片免费高清观看 | 国产精品自拍视频在线| 精品一区二区三区免费毛片爱 | 91在线视频免费91| 黄色a一级视频| 久久久久久免费网| 极品久久久久久久| 综合自拍亚洲综合图不卡区| 成人免费精品动漫网站| 一区二区三区在线视频观看58| 欧美日韩成人免费观看| 亚洲成人激情综合网| 一级黄色免费网站| 欧美在线视频不卡| 国产日韩一级片| 精品美女在线播放| 天堂√在线中文官网在线| 亚洲乱码av中文一区二区| 成人性生交大片免费看午夜| 日韩在线播放视频| 青青草原av在线| 国产成人精品一区二区在线| 美女视频一区| 国产精品入口免费| 亚洲午夜久久| 天天操天天干天天玩| 影音先锋久久久| 亚洲最大综合网| 国产精品一二三在| 蜜桃精品成人影片| 国产精品成人午夜| 国产系列精品av| 欧美性videosxxxxx| 国产成年妇视频| 亚洲摸下面视频| www视频在线免费观看| 97视频在线观看成人| 日韩国产大片| 精品国产一区二区三区麻豆免费观看完整版 | 青青青国产在线| 91精品国产免费| 三级av在线播放| 欧美成在线视频| 亚洲不卡系列| 国产三区二区一区久久| 日本久久综合| 精品国产免费av| 国产一区二区福利视频| 国产特级黄色录像| 亚洲成人动漫一区| 一本色道久久综合无码人妻| 亚洲成人免费网站| 免费a级毛片在线播放| 欧美综合在线第二页| 一本一道久久a久久| 亚洲精品高清视频| 国产日韩综合| 免费黄色在线播放| 一色桃子久久精品亚洲| 亚洲 欧美 中文字幕| 精品国产乱码久久久久久闺蜜 | 在线免费看v片| 日本一区二区三区在线观看| 国产一级二级三级视频| 欧美放荡的少妇| 丝袜美腿美女被狂躁在线观看| 91精品国产91久久久久久吃药 | 欧美成人bangbros| 欧美人xxx| 国产精品免费在线免费 | 国产精选久久| 亚洲国产精品综合| 嫩草成人www欧美| 亚洲一区二区三区综合| 亚洲永久精品大片| 国产免费黄色录像| 日韩在线播放视频| 久久麻豆视频| 亚洲一区二区在| 毛片基地黄久久久久久天堂| 无码一区二区三区在线| 天天操天天干天天综合网| 粉嫩av一区二区夜夜嗨| 久久99久久99精品免观看粉嫩| 成人激情久久| 天堂av免费看| 国产精品资源在线| 美女的奶胸大爽爽大片| 91精品久久久久久久91蜜桃| 米奇777四色精品人人爽| 国产在线观看精品一区二区三区| 成人亚洲一区| 久久这里只精品| 国产精品不卡一区二区三区| 中文字幕有码视频| www.久久久久| 精品久久亚洲| 日韩一级免费看| 成人毛片视频在线观看| 国产午夜小视频| 精品视频www| 午夜av成人| 伊人色综合影院| 国产精品一区二区无线| 久热这里只有精品在线| 精品国产百合女同互慰| wwwww亚洲| 欧美精品二区三区四区免费看视频| 久久精品一区二区三区中文字幕| 男生草女生视频| 欧美日韩精品一区视频| 2024短剧网剧在线观看| 国产伦精品一区二区三区高清| 国产精品亚洲产品| 久久婷婷五月综合| 欧美一区午夜精品| 成人免费网站观看| 青娱乐国产91| 国产美女娇喘av呻吟久久| 国产一二三四在线| 亚洲欧美一区二区三区久久| 成人国产一区| 亚洲精品国产suv一区88| 91在线精品秘密一区二区| 国产日韩久久久| 免费av一区二区| 亚洲国产精品嫩草影院久久av| 亚洲欧美日韩一级| 一区二区三区国产豹纹内裤在线| 日色在线视频| 成人美女av在线直播| 亚洲精品专区| 狂野欧美性猛交| 精品成人在线观看| 亚洲电影有码| 屁屁影院ccyy国产第一页| 久久久天堂av| 午夜精品小视频| 国产成人亚洲综合| 欧美国产高清| 国产成人一区二区在线观看| 欧美成人r级一区二区三区| 日本欧美韩国| 男女视频网站在线观看| 国产精品免费aⅴ片在线观看| 国产综合无码一区二区色蜜蜜| 国产精品成熟老女人| 亚洲福利电影| 色欲人妻综合网| 国产性猛交xxxx免费看久久| eeuss国产一区二区三区四区| 日本激情视频在线|