我從字面上看處處可見,而且人們可以教會我如何在二進制代碼中編寫單個數字,字母,符號等等,但實際上我沒有在語法上看到它會顯示爲什麼。諸如加法,減法,拼出單詞或其他類似的東西。每個1和0的組合之間是否存在空格,正數和負數的組合,還是逐行?這似乎是一件不應該很難找到答案的東西。腳本中的二進制文件是什麼樣的?
回答
在大多數現代機器中,字符數據被管理爲8位字節。 (在某些情況下,字符是16位或32位,但在這個節骨眼上只是混亂。)
如果你看一下ASCII table你會看到基本的「拉丁」字符集:
單個字符由8位字節標識,其中(對於基本ASCII字符)高位爲零。因此,值在0到127之間或在00和7F之間(或二進制00000000和01111111之間)運行。
我應該在這裏注意到,前32個代碼是「控制字符」的非打印代碼。例如,十進制10或十六進制0A的代碼是「換行」代碼,它是C和Java中稱爲「換行符」的代碼。 00代碼是下面提到的「NUL」字符。
句子中的字符按照連續的字節順序排列在內存中。因此,「Hello」將是十六進制的48 65 6C 6C 6F
。對於C和C++,簡單的「C字符串」總是以全零字節(圖表中的「NUL」字符)結尾。對於Java而言,字符串的長度在別的地方是一個單獨的變量。一些字符編碼方案將該字符串的長度「前綴」爲8位或16位值。
正如您在上面看到的,ASCII字符集包括非字母字符,如!
和+
和?
。對於「非拉丁文」字符(例如字符£
或Ç
),有幾種技術之一用於「擴展」字符集。有時,那些值爲128到255的8位字符被用來表示給定語言的非拉丁字符(儘管必須知道哪種語言才能知道表示哪組字符)。在其他情況下,使用「Unicode」,使用16位或32位字符而不是8位字符,以便幾乎每種語言中的每個字符都有其自己的唯一代碼。
Binary只是一種表示數字的不同方式。它的基數爲2,其中十進制數爲10,十六進制數爲16,當人們提到「二進制代碼」時,通常意味着編譯的程序代碼,也就是機器代碼。
Machine code只是二進制,因爲它在低級別存儲爲一系列二進制數字(位)。但是當任何人看着它時,他們都會用十六進制編輯器來查看它,這比讀取二進制文件要容易得多。
更簡單的方法是將其反彙編爲彙編語言,彙編語言用它們代表的指令名稱替換數字。
下面是來自維基百科a good example,這也解釋瞭如何將這些二進制數:
10110000 01100001
可以在十六進制表示爲
B0 61
可以翻譯成本屆大會:
MOV AL, 61h ; Load AL with 97 decimal (61 hex)
- 1. 這是什麼樣的二進制到文本編碼?
- 2. 二進制文件的EOF是什麼?
- 3. 什麼是二進制文件?
- 4. Silverlight二進制文件.ni.dlls是什麼?
- 5. 二進制文件應該是什麼樣子?
- 6. 什麼是稱爲「android」的二進制/腳本?
- 7. 二進制文件中的熵 - 目的是什麼?
- 8. PHP中的二進制文件的前綴是什麼?
- 9. Bash腳本 - 讀取二進制文件
- 10. Websocket:什麼是文本/二進制幀指示器的目的
- 11. 什麼是python中的模塊二進制文件
- 12. 反彙編二進制文件中HIGHLOW的含義是什麼?
- 13. \ x00在二進制文件中的含義是什麼?
- 14. 什麼是VB6本地化支持二進制文件?
- 15. 服務二進制文件(.swf)的Http響應是什麼樣的?
- 16. Java中文本的二進制文件
- 17. 什麼是二進制文字?
- 18. 什麼樣的文件是有效的Xcode行爲腳本?
- 19. 用C++編寫文本/二進制文件最優雅的方式是什麼?
- 20. 二進制文件中的GCC版本
- 21. 這是什麼樣的二進制數字表示形式?
- 22. 爲什麼git認爲我的文件是二進制
- 23. 編譯後的二進制文件是什麼意思?
- 24. 爲什麼git索引文件是二進制的?
- 25. gen_tcp:recv收到的二進制文件是什麼?
- 26. rc.d腳本在/ run/daemons中查找我的二進制文件
- 27. 什麼是複製QT中的兩個二進制文件的最佳方式
- 28. 什麼是解包的「二進制串」
- 29. 在像bash這樣的shell中,在二進制文件中看到二進制而不是十六進制
- 30. 確定文件是二進制文件還是文本文件