C# BCD編碼解碼

來源:互聯網
上載者:User
(1)BCD碼(二到十進位編碼) 人們通常習慣使用十進位數,而電腦內部多採用二進位表示和處理數值資料, 因此在電腦輸入和輸出資料時,就要進行由十進位到二進位的轉換處理。 把十進位數的每一位分別寫成二進位形式的編碼,稱為二進位編碼的十進位數, 即二到十進位編碼或BCD(Binary Coded Decimal)編碼。 BCD碼編碼方法很多,通常採用8421編碼,這種編碼方法最自然簡單。 其方法使用四位位元表示一位十進位數,從左至右每一位對應的權分別是 23、22、21、20,即8、4、2、1。例如十進位數1975的8421碼可以這樣得出 1975(D)=0001 1001 0111 0101(BCD) 用四位二進位表示一位十進位會多出6種狀態,這些多餘狀態代碼稱為BCD碼中的非法碼。 BCD碼與二進位之間的轉換不是直接進行的, 當需要將BCD碼轉換成二進位碼時,要先將BCD碼轉換成十進位碼,然後再轉換成二進位碼; 當需要將二進位轉換成BCD碼時,要先將二進位轉換成十進位碼,然後再轉換成BCD碼。 編碼過程,將數字69進行BCD編碼(註:BCD編碼低位在前,後面將不再注釋)。 1.       將6,9分別轉換成二進位表示:6(00000110)9(00001001),大家可以看到,最大的數字9也只要4個位,在傳輸過程中白白浪費了4個位; 2.       將69合并為一個位元組,分別取6,9二進位編碼的低4位,按照低位在前的原則,將9的低四位放前面6的低四位放後面得出新的位元組二進位編碼是10010110; 3.       完成編碼過程,69的BCD編碼結果為10010110。 解碼過程:將69的BCD碼10010110進行解碼。 1.       將10010110的高4位與低4位拆分開,得到兩個位元1001和0110; 2.       分別將1001和0110的前面補充4位0000得到兩個8位的位元00001001,00000110; 3.       因為編碼時低位在前,所以我們將兩個位元編排順序為00000110 000010001; C#版代碼實現: int x=97; ///要對整數97BCD編碼     byte m=(((byte)7)<<4)+(((byte)9));     //得到的m即為數字97和BCD碼位元組表現形式     string bs="";     bs=(((byte)(m<<4))>>4)).ToString()+"+"+(m>>4).ToString(); bs即為從BCD碼解得的字串 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.