Ascii碼 、16進制與 char


          對於一個非計算機專業出身的人,以前只知道計算機中所有的數據都是以二進制形式進行存儲,計算,通信的。但是人類文明中,主要的信息展現以文本的形式展現的。如果使用內存中的0和1來表示文本一直都是一個問題,因為每一個人都可以制定自己的編碼。這種現象直到ASCII的出現。ASCII 統一了數字,字母,符號的二進制編碼。
          美國標准ASCII有128個,0-32和127是控制字符或通信字符,如控制符:LF(換行), CR(回車)、FF(換頁)、DEL(刪除) 、BS(退格)、BEL(振鈴)等。通訊專用字符:SOH(頭文)、EOT(文尾)、ACK(確認)等。他們沒有特定的圖形顯示,單會依不同的程序,對文本顯示有不同的影響。
        33-126是字符,48-57為0-9數字
         65-90為26個大寫字母,97-122號為26個小寫字母。其余的為一些符號,運算符號。
同時還要注意,標准ASCII的最高位Bit7是一個奇偶校驗位。 擴展的ASCII有258個,最高位用來確定附加的128個特殊字符,外來字母和圖形符號。

    舉個例子:看看ASCII  --- ‘A’是如何用二進制表示的 0100 0001  十六進制為:0x41,十進制是65。作為一個程序員大家在VS中經常放在一個字符上的時候,會出現兩個值,一個值是ASCII的十進制,一個是ASCII對應的字符。

    現在大家想一個問題,如果在數據傳輸的過程中,A-->B計算機需要發送"abc"這樣的字符串,本質上時發送的abc三個字符對應的ASCII碼。如果我們通過串口發送,必須要把’abc‘轉化為二進制或者16進制。 特別注意:因為一個每個ASCII會對應一個字符(有顯示符號的,無顯示符號的)。 例如我們想要發送字符串“2D”,許多程序員由於對ASCII理解不到位,因此直接把"2D"當成ASCII的16進制發送了,而實質上發送過去的是:0x3244。因此產生了數據的傳輸過去后,由於錯誤的理解,當然會解析錯誤。

現在明確一點,在電腦屏幕上顯示的都是以ASCII對應的字符顯示的,而數據的存儲,傳輸,計算在計算機內部都是二進制的形式表示的。

         






免責聲明!

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



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