0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Python編碼與解碼

麥辣雞腿堡 ? 來源:Python都知道 ? 作者:了不起 ? 2023-07-05 15:59 ? 次閱讀

先做下科普:UNICODE字符編碼,也是一張字符與數(shù)字的映射,但是這里的數(shù)字被稱為代碼點(code point), 實際上就是十六進制的數(shù)字。

Python官方文檔中對Unicode字符串、字節(jié)串與編碼之間的關系有這樣一段描述:

Unicode字符串是一個代碼點(code point)序列,代碼點取值范圍為0到0x10FFFF(對應的十進制為1114111)。這個代碼點序列在存儲(包括內(nèi)存和物理磁盤)中需要被表示為一組字節(jié)(0到255之間的值),而將Unicode字符串轉換為字節(jié)序列的規(guī)則稱為編碼。

這里說的編碼不是指字符編碼,而是指編碼的過程以及這個過程中所使用到的Unicode字符的代碼點與字節(jié)的映射規(guī)則。這個映射不必是簡單的一對一映射,因此編碼過程也不必處理每個可能的Unicode字符,例如:

將Unicode字符串轉換為ASCII編碼的規(guī)則很簡單--對于每個代碼點:

如果代碼點數(shù)值《128,則每個字節(jié)與代碼點的值相同

如果代碼點數(shù)值》=128,則Unicode字符串無法在此編碼中進行表示(這種情況下,Python會引發(fā)一個UnicodeEncodeError異常)

將Unicode字符串轉換為UTF-8編碼使用以下規(guī)則:

如果代碼點數(shù)值《128,則由相應的字節(jié)值表示(與Unicode轉ASCII字節(jié)一樣)

如果代碼點數(shù)值》=128,則將其轉換為一個2個字節(jié),3個字節(jié)或4個字節(jié)的序列,該序列中的每個字節(jié)都在128到255之間。

簡單總結:

編碼(encode):將Unicode字符串(中的代碼點)轉換特定字符編碼對應的字節(jié)串的過程和規(guī)則

解碼(decode):將特定字符編碼的字節(jié)串轉換為對應的Unicode字符串(中的代碼點)的過程和規(guī)則

可見,無論是編碼還是解碼,都需要一個重要因素,就是特定的字符編碼。因為一個字符用不同的字符編碼進行編碼后的字節(jié)值以及字節(jié)個數(shù)大部分情況下是不同的,反之亦然。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    932

    瀏覽量

    54731
  • python
    +關注

    關注

    55

    文章

    4767

    瀏覽量

    84376
收藏 人收藏

    評論

    相關推薦

    正交編碼解碼原理及解碼思路

    一、正交編碼解碼原理:二、解碼思路(1)方法一:使用定時器的輸入捕獲功能,配置好TIM_ICInitTypeDef即可獲取一定時間內(nèi)的脈沖個數(shù),并可根據(jù)B相上升沿時A相所處的電平判斷電機正轉還是反轉。中斷類型配置為更新事件和上升
    發(fā)表于 08-16 06:38

    PT2262編碼芯片的軟件解碼

    PT2262編碼芯片的軟件解碼 詳述PT2262編碼和軟件解碼
    發(fā)表于 04-07 16:48 ?240次下載

    什么是音頻的編碼解碼/HZ(赫茲)

    什么是音頻的編碼解碼/HZ(赫茲)    編碼解碼:在數(shù)字音頻技術中,用數(shù)字大小來代替聲音強弱高低的模擬電壓,并對音頻
    發(fā)表于 02-05 11:28 ?1586次閱讀

    圖像壓縮編碼解碼原理

    圖像壓縮編碼解碼原理 本節(jié)介紹圖像壓縮
    發(fā)表于 09-27 08:45 ?4331次閱讀
    圖像壓縮<b class='flag-5'>編碼</b>和<b class='flag-5'>解碼</b>原理

    音頻編碼解碼原理

    音頻編碼解碼原理 每張CD光盤重放雙聲道立體聲信號可達74分鐘。VCD視盤機要
    發(fā)表于 09-27 08:52 ?6774次閱讀
    音頻<b class='flag-5'>編碼</b>和<b class='flag-5'>解碼</b>原理

    曼徹斯特編碼解碼及其應用

    曼徹斯特編碼解碼及其應用。
    發(fā)表于 05-20 14:28 ?0次下載

    h264編碼解碼源代碼

    h264編碼解碼源代碼h264編碼解碼源代碼
    發(fā)表于 01-14 15:50 ?34次下載

    短信編碼解碼C語言

    1.消息編碼解碼 用C實現(xiàn)7-bit編碼解碼的算法如下: // 7-bit編碼 // pSrc: 源字符串指針 // pDst: 目標
    發(fā)表于 08-30 16:59 ?4次下載
    短信<b class='flag-5'>編碼</b>與<b class='flag-5'>解碼</b>C語言

    java實現(xiàn)的哈夫曼編碼解碼

     摘要:哈夫曼編碼作為一種編碼方式,已經(jīng)在生活中得到了實際的運用,下面我們以java實現(xiàn)的哈夫曼編碼解碼為核心來講述它的編碼方式及程序等。
    發(fā)表于 12-11 08:39 ?5721次閱讀
    java實現(xiàn)的哈夫曼<b class='flag-5'>編碼</b>與<b class='flag-5'>解碼</b>

    NVIDIA推出適用于Python的VPF,簡化開發(fā)GPU加速視頻編碼/解碼

    NVIDIA推出了適用于Python的開源視頻處理框架“VideoProcessingFramework”(VPF)。據(jù)悉,VPF 是一組開源的C ++庫和Python綁定,可與其封閉源代碼Codec SDK進行交互。該框架的功能是簡化從
    的頭像 發(fā)表于 12-18 14:25 ?6944次閱讀

    STM32的音頻編碼與在PC端的解碼

    STM32的音頻編碼與在PC端的解碼簡介STM32F4移植編碼PC移植解碼結尾簡介能看到這篇文章的基本上都是有迫切需求的人,話不多說,切入正題編解碼
    發(fā)表于 12-16 16:53 ?25次下載
    STM32的音頻<b class='flag-5'>編碼</b>與在PC端的<b class='flag-5'>解碼</b>

    基于transformer的編碼器-解碼器模型的工作原理

    與基于 RNN 的編碼器-解碼器模型類似,基于 transformer 的編碼器-解碼器模型由一個編碼器和一個
    發(fā)表于 06-11 14:17 ?2096次閱讀
    基于transformer的<b class='flag-5'>編碼</b>器-<b class='flag-5'>解碼</b>器模型的工作原理

    Python中的默認編碼

    ####1. Python源代碼文件的執(zhí)行過程 我們都知道,磁盤上的文件都是以二進制格式存放的,其中文本文件都是以某種特定編碼的字節(jié)形式存放的。對于程序源代碼文件的字符編碼是由編輯器指定的,比如
    的頭像 發(fā)表于 07-05 16:11 ?1088次閱讀
    <b class='flag-5'>Python</b>中的默認<b class='flag-5'>編碼</b>

    Python字符編碼轉換

    UNICODE字符串可以與任意字符編碼的字節(jié)進行相互轉換,如圖: 那么大家很容易想到一個問題,就是不同的字符編碼的字節(jié)可以通過Unicode相互轉換嗎?答案是肯定的。 Python2中的字符串進行
    的頭像 發(fā)表于 07-05 16:25 ?1037次閱讀
    <b class='flag-5'>Python</b>字符<b class='flag-5'>編碼</b>轉換

    DVEVM/DVSDK 1.2的編碼解碼演示

    電子發(fā)燒友網(wǎng)站提供《DVEVM/DVSDK 1.2的編碼解碼演示.pdf》資料免費下載
    發(fā)表于 10-16 11:26 ?0次下載
    DVEVM/DVSDK 1.2的<b class='flag-5'>編碼</b><b class='flag-5'>解碼</b>演示