日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二进制编码转ASCII字符与字符转二进制码的小解码器、编码器

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二进制编码转ASCII字符与字符转二进制码的小解码器、编码器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????

文章目錄

前言

一、ASCII碼及其它編碼發展的介紹

二、解決方案

1.解碼ASCII編碼

程序運行演示:

Logic will get you from A to B. Imagination will take you everywhere.

2.編碼ASCII碼

總結






前言

?這罪惡的根源在于一個題目......害!!!!


我靠,嘖嘖嘖.....這么一串是個啥?

?原來啊,這是一串8位二進制表示的ASCII編碼!




一、ASCII碼及其它編碼發展的介紹

  • ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)
  • 由于計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母?A的編碼是65,小寫字母?z的編碼是122。后128個稱為擴展ASCII碼。

    ASCII編碼:

    空格(0)對應的ASCII碼就是是0;對勾(251)對應的ASCII碼是11111011。如果我們想要表示一個空格+對勾,那么就是0+11111011,但是放在一起就是011111011,該怎樣”斷句“呢?顯然出現了混亂,故而:?

    由于編碼表中最多255個字符,所以人們想到了用八位二進制來表示這些字符。比如A(65)對應的二進制碼就是1000001,不足8位在前面補0,所以01000001。所以空格+對勾就可以表示為0000000011111011,讀取的時候每八位讀取一個字符即可。

    2.GB2312 & GBK(中國人自己的編碼)

    很顯然,ASCII編碼只能顯示英文,不能顯示漢字,美國佬當年在造計算機的時候肯定也沒想到,中國人有一天也會用上計算機,上世界80年代,電腦進入中國,專家們是頭疼啊!我中華文化博大精深,光常用漢字就有幾千個,你一張ASCII編碼表也裝不了啊,但是但是,我們中國人從來不怕困難,沒有我們就自己造唄,于是,GB2312(存了6763個漢字)就誕生了!

    ?后來,在1995年,專家們又升級了GB2312,也就是現在windows電腦中文版本的編碼:GBK.

    ?3.Unicode(萬國碼)

    在計算機高速發展的那個年代,各個國家都在發展屬于自己的編碼,中國的GB2312,日本的Shift_JIS,韓國的Euc-kr,于是啊,問題就出現了,你GB2312編寫的代碼在日本的終端上不能運行,是一堆亂碼,這就是編碼的混戰時代,這可咋整呢?后來是聯合國調解,統一了所有的語言,將其放在了Unicode里,這就是萬國碼的由來!




    二、解決方案




    1.解碼ASCII編碼

    其實要實現ASCII編碼的解碼是很簡單的,首先,需要將8位二進制數轉換為十進制數,再利用python自帶的chr函數將十進制數轉為ASCII編碼表中對應的字符就行了!

    代碼如下:

    print("歡迎使用mc開發的程序!".center(50, '*'),"\n") # 本人的個性標簽 print("請輸入你需要解碼的code:") a = input("code:") li = list(a) # 先將需要轉譯的編碼由8位二進制碼轉為列表,便于后面程序的操作 b = [] # 空列表b用于存放解碼出來的字符串 m = 0 n = 7 while n <= len(li):x = li[m:n+1:1] # 將列表進行切片處理b.append(x)m += 9n += 9 # 此處用到算法是為了將空格給去掉,每8位跳一次 print(b,len(b)) # 打印b,看看是否出現錯誤,此處已經實驗過,需要的話請取消注釋 for i in range(len(b)):print(len(b[i]),end="") print('\n') print("Please judge it's True or False by 8888......always") # 判斷是否出現錯誤,保證每一個元素b[i]都是8位二進制數以免后面轉譯的時候出錯 print("\n") print("破譯成功***你所破譯的編碼意思是:") # 定義一個進制轉換并輸出ASCII字符函數 def two_translate_ten(x):i = 0sum = 0while i <= 7:sum += int(x[i]) * 2**(7-i)i += 1print(chr(sum),end="") # 將10進制數轉換為對應的ASCII字符并無換行輸出return 0 j = 0 while j <= len(b)-1:x = b[j]two_translate_ten(x)j += 1 # 循環調用 two_translate_ten(x)函數 print("\n") print("感謝使用mc開發的程序!".center(60, '*')) print("\n") # for k in range(len(b)): # two_translate_ten(b[k]) # 此處代碼存在一定的問題,在于切片后的列表內還是一個個小的列表,如果要調用這些小列表里面的數據,就需要進行賦值轉換




    程序運行演示:

    *******************歡迎使用mc開發的程序!******************* 請輸入你需要解碼的code: # 這里直接復制粘貼所需要解碼的代碼就行了 code:01001100 01101111 01100111 01101001 01100011 00100000 01110111 01101001 01101100 01101100 00100000 01100111 01100101 01110100 00100000 01111001 01101111 01110101 00100000 01100110 01110010 01101111 01101101 00100000 01000001 00100000 01110100 01101111 00100000 01000010 00101110 00100000 01001001 01101101 01100001 01100111 01101001 01101110 01100001 01110100 01101001 01101111 01101110 00100000 01110111 01101001 01101100 01101100 00100000 01110100 01100001 01101011 01100101 00100000 01111001 01101111 01110101 00100000 01100101 01110110 01100101 01110010 01111001 01110111 01101000 01100101 01110010 01100101 00101110 888888888888888888888888888888888888888888888888888888888888888888888Please judge it's True or False by 8888......always破譯成功***你所破譯的編碼意思是: Logic will get you from A to B. Imagination will take you everywhere.************************感謝使用mc開發的程序!************************

    Logic will get you from A to B. Imagination will take you everywhere.

    (邏輯會帶你從A到B,想象會帶你到任何地方)

    顯然,這就是一開始我們提到的那個題目的答案了!

    在這個代碼中我們需要注意的是題目給出的代碼每8位間是有一個空格的,所以在必須將空格去掉,用列表的切片功能就可以實現了!

    2.編碼ASCII碼

    其實這個設計是當時在寫完上一個編碼后突發奇想想要實現的!既然我能夠將一段ASCII編碼解碼為一段英文輸出,那么我也一定能夠將一段英文編碼為一段ASCII編碼啦!

    代碼如下:

    print("歡迎使用mc開發的程序!".center(50, '*')) # 本人的個性標簽 print("Please write your code:") x = input("code:") i = 0 st = [] # 定義一個10進制轉二進制的函數 def two_transfer(x):a = []while x != 0:a.append(x%2)x =int(x/2)a.reverse()while len(a) != 8:a.insert(0,0) # 避免二進制數不滿足8位碼的要求,需要在二進制碼前面補0st.append(a)print(a)return st # 返回st,用于后面的調用 while i <= len(x)-1:y = ord(x[i]) # 轉為十進制數two_transfer(y) # 調用10進制轉二進制函數,將10進制轉為2進制數i += 1 print("\n") print("Translating your words into codes is successful,it's (你的代碼已編譯成功):") print("\n") for k in st:k.insert(8,' ') # 加空格for i in range(len(k)):print ("".join(str(k[i])),end='') # 將‘’去掉后輸出 print("\n") print("\n","感謝使用mc開發的程序!".center(60, '*'))

    為了實現能夠與前面的解碼程序相兼容,這里我們用了.insert (8,' ')插入了一個空格

    下面我們以編碼歌曲《Star Sky》歌詞為例:“Here we are !Riding the sky,Painting the night with sun,You and I, Mirrors of light,Twin flames of fire,Lit in another time and place,I knew your name,I knew your face,Your love and grace,Past and present now embrace,Worlds collide in inner space,Unstoppable, the song we play!”

    代碼運行情況:

    *******************歡迎使用mc開發的程序!******************* Please write your code: code:Here we are !Riding the sky,Painting the night with sun,You and I, Mirrors of light,Twin flames of fire,Lit in another time and place,I knew your name,I knew your face,Your love and grace,Past and present now embrace,Worlds collide in inner space,Unstoppable, the song we playTranslating your words into codes is successful,it's (你的代碼已編譯成功):01001000 01100101 01110010 01100101 00100000 01110111 01100101 00100000 01100001 01110010 01100101 00100000 00100001 01010010 01101001 01100100 01101001 01101110 01100111 00100000 01110100 01101000 01100101 00100000 01110011 01101011 01111001 00101100 01010000 01100001 01101001 01101110 01110100 01101001 01101110 01100111 00100000 01110100 01101000 01100101 00100000 01101110 01101001 01100111 01101000 01110100 00100000 01110111 01101001 01110100 01101000 00100000 01110011 01110101 01101110 00101100 01011001 01101111 01110101 00100000 01100001 01101110 01100100 00100000 01001001 00101100 00100000 01001101 01101001 01110010 01110010 01101111 01110010 01110011 00100000 01101111 01100110 00100000 01101100 01101001 01100111 01101000 01110100 00101100 01010100 01110111 01101001 01101110 00100000 01100110 01101100 01100001 01101101 01100101 01110011 00100000 01101111 01100110 00100000 01100110 01101001 01110010 01100101 00101100 01001100 01101001 01110100 00100000 01101001 01101110 00100000 01100001 01101110 01101111 01110100 01101000 01100101 01110010 00100000 01110100 01101001 01101101 01100101 00100000 01100001 01101110 01100100 00100000 01110000 01101100 01100001 01100011 01100101 00101100 01001001 00100000 01101011 01101110 01100101 01110111 00100000 01111001 01101111 01110101 01110010 00100000 01101110 01100001 01101101 01100101 00101100 01001001 00100000 01101011 01101110 01100101 01110111 00100000 01111001 01101111 01110101 01110010 00100000 01100110 01100001 01100011 01100101 00101100 01011001 01101111 01110101 01110010 00100000 01101100 01101111 01110110 01100101 00100000 01100001 01101110 01100100 00100000 01100111 01110010 01100001 01100011 01100101 00101100 01010000 01100001 01110011 01110100 00100000 01100001 01101110 01100100 00100000 01110000 01110010 01100101 01110011 01100101 01101110 01110100 00100000 01101110 01101111 01110111 00100000 01100101 01101101 01100010 01110010 01100001 01100011 01100101 00101100 01010111 01101111 01110010 01101100 01100100 01110011 00100000 01100011 01101111 01101100 01101100 01101001 01100100 01100101 00100000 01101001 01101110 00100000 01101001 01101110 01101110 01100101 01110010 00100000 01110011 01110000 01100001 01100011 01100101 00101100 01010101 01101110 01110011 01110100 01101111 01110000 01110000 01100001 01100010 01101100 01100101 00101100 00100000 01110100 01101000 01100101 00100000 01110011 01101111 01101110 01100111 00100000 01110111 01100101 00100000 01110000 01101100 01100001 01111001 ************************感謝使用mc開發的程序!************************

    可以看到我們已經能夠將一段英文轉換為ASCII編碼啦!


    ?并且每8位一個字符,空格隔開,可以與解碼程序相容,感興趣的讀者可以嘗試一下。

    示范:

    *******************歡迎使用mc開發的程序!******************* 請輸入你需要解碼的code: code:01001000 01100101 01110010 01100101 00100000 01110111 01100101 00100000 01100001 01110010 01100101 00100000 00100001 01010010 01101001 01100100 01101001 01101110 01100111 00100000 01110100 01101000 01100101 00100000 01110011 01101011 01111001 00101100 01010000 01100001 01101001 01101110 01110100 01101001 01101110 01100111 00100000 01110100 01101000 01100101 00100000 01101110 01101001 01100111 01101000 01110100 00100000 01110111 01101001 01110100 01101000 00100000 01110011 01110101 01101110 00101100 01011001 01101111 01110101 00100000 01100001 01101110 01100100 00100000 01001001 00101100 00100000 01001101 01101001 01110010 01110010 01101111 01110010 01110011 00100000 01101111 01100110 00100000 01101100 01101001 01100111 01101000 01110100 00101100 01010100 01110111 01101001 01101110 00100000 01100110 01101100 01100001 01101101 01100101 01110011 00100000 01101111 01100110 00100000 01100110 01101001 01110010 01100101 00101100 01001100 01101001 01110100 00100000 01101001 01101110 00100000 01100001 01101110 01101111 01110100 01101000 01100101 01110010 00100000 01110100 01101001 01101101 01100101 00100000 01100001 01101110 01100100 00100000 01110000 01101100 01100001 01100011 01100101 00101100 01001001 00100000 01101011 01101110 01100101 01110111 00100000 01111001 01101111 01110101 01110010 00100000 01101110 01100001 01101101 01100101 00101100 01001001 00100000 01101011 01101110 01100101 01110111 00100000 01111001 01101111 01110101 01110010 00100000 01100110 01100001 01100011 01100101 00101100 01011001 01101111 01110101 01110010 00100000 01101100 01101111 01110110 01100101 00100000 01100001 01101110 01100100 00100000 01100111 01110010 01100001 01100011 01100101 00101100 01010000 01100001 01110011 01110100 00100000 01100001 01101110 01100100 00100000 01110000 01110010 01100101 01110011 01100101 01101110 01110100 00100000 01101110 01101111 01110111 00100000 01100101 01101101 01100010 01110010 01100001 01100011 01100101 00101100 01010111 01101111 01110010 01101100 01100100 01110011 00100000 01100011 01101111 01101100 01101100 01101001 01100100 01100101 00100000 01101001 01101110 00100000 01101001 01101110 01101110 01100101 01110010 00100000 01110011 01110000 01100001 01100011 01100101 00101100 01010101 01101110 01110011 01110100 01101111 01110000 01110000 01100001 01100010 01101100 01100101 00101100 00100000 01110100 01101000 01100101 00100000 01110011 01101111 01101110 01100111 00100000 01110111 01100101 00100000 01110000 01101100 01100001 01111001 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888Please judge it's True or False by 8888......always破譯成功***你所破譯的編碼意思是: Here we are !Riding the sky,Painting the night with sun,You and I, Mirrors of light,Twin flames of fire,Lit in another time and place,I knew your name,I knew your face,Your love and grace,Past and present now embrace,Worlds collide in inner space,Unstoppable, the song we play************************感謝使用mc開發的程序!************************Process finished with exit code 0

    ?編碼與解碼程序是相兼容的!




    結語

    這個問題到此就算是解決了!害....!!!真不容易啊!

    OK,有問題可以留言詢問哦!

    總結

    以上是生活随笔為你收集整理的二进制编码转ASCII字符与字符转二进制码的小解码器、编码器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。