最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Python字符編碼與二進(jìn)制不得不說(shuō)的一些事

 更新時(shí)間:2020年10月04日 08:57:10   作者:北門吹雪  
這篇文章主要給大家介紹了關(guān)于Python字符編碼與二進(jìn)制不得不說(shuō)的一些事,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

二進(jìn)制

核心思想:

  馮諾依曼 + 圖靈機(jī)

  電如何表示狀態(tài),才能穩(wěn)定?

    計(jì)算機(jī)開(kāi)始設(shè)計(jì)的時(shí)候并不是考慮簡(jiǎn)單,而是考慮能自動(dòng)完成任務(wù)與結(jié)果的可靠性,
    簡(jiǎn)單始終是建立再穩(wěn)定、可靠基礎(chǔ)上

    經(jīng)過(guò)嘗試10進(jìn)制,但很難檢查電流的狀態(tài)差異并且很難穩(wěn)定狀態(tài),最穩(wěn)定的檢查是
    通電和不通電狀態(tài),共兩種狀態(tài)那就規(guī)定 通電為 1 不通電 為 0,1和0的狀態(tài)邏
    輯被稱為比特 Bit

  那么如何用 0 和 1 表示數(shù)字和字符呢?

    首先找出需要表示的字符,英文字符和數(shù)字字符才100多個(gè),需要 7 個(gè)二進(jìn)制位就
    可以全部表示,但為了可擴(kuò)展性,多出一位表示擴(kuò)展,這就是ASCII碼

    因?yàn)橐粋€(gè)字符只需要最多8個(gè)二進(jìn)制位表示,所以規(guī)定8個(gè)字節(jié)作為存儲(chǔ)單位,所有
    8 Bit = 1 Byte

    規(guī)定字符用數(shù)字表示,數(shù)字用二進(jìn)制表示,也就是 字符 --> 數(shù)字 -- > 二進(jìn)制,
    那么文本信息就可以通過(guò)計(jì)算機(jī)存儲(chǔ)為二進(jìn)制,計(jì)算機(jī)上存儲(chǔ)的二進(jìn)制數(shù)可以逆轉(zhuǎn)
    成文本信息

    10 進(jìn)制到二進(jìn)制之間的關(guān)系轉(zhuǎn)換是固定的,那么字符到數(shù)字之間的轉(zhuǎn)換被我們稱為
    字符編碼, ASCII碼 Unicode UTF-8 都是存儲(chǔ)字符與數(shù)字之間的映射關(guān)系

 弄清楚幾個(gè)關(guān)系

  1. 字符與數(shù)字之間的關(guān)系為映射關(guān)系,人為規(guī)定的標(biāo)準(zhǔn)

      這種映射關(guān)系,生活中普遍存在,如

    a. 身份證信息與身份證號(hào)碼

    b. 數(shù)據(jù)庫(kù)id與該行信息

    c. 訂單信息與訂單編號(hào)

    d. 員工編號(hào)與員工

    e. 字典的鍵與值

    f. 內(nèi)存地址與存儲(chǔ)在該地址上的值

    ...

  2. 數(shù)字到二進(jìn)制之間的關(guān)系,這個(gè)如同數(shù)學(xué)或物理定律一樣,固定轉(zhuǎn)換方式,寫死的

  3. 8進(jìn)制 16 進(jìn)制都是建立在2進(jìn)制的基礎(chǔ)上,和10進(jìn)制之間沒(méi)有直接關(guān)系,主要為了

   可讀性,二進(jìn)制的兩種表示形式

   如二進(jìn)制 00000000 一個(gè)存儲(chǔ)單位,八進(jìn)制000 000 000 每 3 個(gè)二進(jìn)制位轉(zhuǎn)

   換位10進(jìn)制表示,最小數(shù)為 0 最大數(shù)為 7,所以取值范圍為 0 - 7

   十六進(jìn)制 0000 0000 每 4個(gè)二進(jìn)制位轉(zhuǎn)換位10進(jìn)制表示,最小位為0 最大為15,

   所有取值范圍為 0 - 15,因?yàn)槌?0機(jī)制表示范圍所以用 abcdef表示 10 11

   12 13 14 15

   十六進(jìn)制常用于 內(nèi)存地址表示 IPv6地址 顏色表 mac地址 二進(jìn)制數(shù)據(jù)\x前綴b/B

    IP地址(32位 點(diǎn)分十進(jìn)制) x.x.x.x 每個(gè)x都是8個(gè)bit位表示的十進(jìn)制數(shù)字

  # 8進(jìn)制 16進(jìn)制是建立在二進(jìn)制的基礎(chǔ)之上

Py進(jìn)制轉(zhuǎn)換函數(shù)

  10進(jìn)制轉(zhuǎn)其他進(jìn)制

    轉(zhuǎn)2進(jìn)制 bin 前綴0b

    轉(zhuǎn)16進(jìn)制 hex 前綴0x

    轉(zhuǎn)8進(jìn)制 oct 前綴0o

    # 二進(jìn)制 八進(jìn)制 十六進(jìn)制都是通過(guò)帶前綴的字符串形式"0b/o/x..."

# 10 進(jìn)制轉(zhuǎn)其他進(jìn)制
number = 9999
print("10進(jìn)制轉(zhuǎn)其他進(jìn)制".ljust(40, "*"))
# 10 進(jìn)制轉(zhuǎn)2進(jìn)制
b_number = bin(number)
print("二進(jìn)制:", b_number)
# 10進(jìn)制轉(zhuǎn)8進(jìn)制
o_number = oct(number)
print("八進(jìn)制:", o_number)
# 10進(jìn)制轉(zhuǎn)16進(jìn)制
h_number = hex(number)
print("十六進(jìn)制:", h_number)

  其他進(jìn)制轉(zhuǎn)10進(jìn)制 int(..., base) base指定進(jìn)制

# 10 進(jìn)制轉(zhuǎn)其他進(jìn)制
number = 9999
print("10進(jìn)制轉(zhuǎn)其他進(jìn)制".ljust(40, "*"))
# 10 進(jìn)制轉(zhuǎn)2進(jìn)制
b_number = bin(number)
print("二進(jìn)制:", b_number)
# 10進(jìn)制轉(zhuǎn)8進(jìn)制
o_number = oct(number)
print("八進(jìn)制:", o_number)
# 10進(jìn)制轉(zhuǎn)16進(jìn)制
h_number = hex(number)
print("十六進(jìn)制:", h_number)
 
# 其他進(jìn)制轉(zhuǎn)10進(jìn)制
# 2進(jìn)制轉(zhuǎn)10進(jìn)制
num_b = int(b_number, base=2)
print(num_b)
# 8 進(jìn)制轉(zhuǎn)10進(jìn)制
num_o = int(o_number, base=8)
print(num_o)
# 8 進(jìn)制轉(zhuǎn)16進(jìn)制
num_h = int(h_number, base=16)
print(num_h)

  字符串轉(zhuǎn)二進(jìn)制字符串

    bytes

    encode

    需要指定字符編碼,結(jié)果前綴為 b/B"..."

# 字符串轉(zhuǎn)二進(jìn)制字符串
song = "你驕傲的飛遠(yuǎn),我棲息的夏天"
 
byte_song = song.encode(encoding="utf-8")
print(byte_song)
# 等價(jià)于
eq_byte_song = bytes(song, encoding="utf-8")
print(eq_byte_song)
print(byte_song == eq_byte_song)

  二進(jìn)制轉(zhuǎn)字符串

    decode

    str

    需要指定字符編碼

# 二進(jìn)制轉(zhuǎn)字符串
song = "你驕傲的飛遠(yuǎn),我棲息的夏天"
# 獲得二進(jìn)制數(shù)據(jù)
byte_song = song.encode(encoding="utf-8")
print(byte_song)
 
# 二進(jìn)制字符串轉(zhuǎn)文本字符串
print("二進(jìn)制數(shù)據(jù)轉(zhuǎn)字符串".rjust(40, "_"))
dec_song = byte_song.decode(encoding="utf-8")
print(dec_song)
# 等價(jià)于'
str_song = str(byte_song, encoding="utf-8")
print(str_song)
print(dec_song == str_song)

  算術(shù)方法

    10進(jìn)制轉(zhuǎn)2 8 16進(jìn)制,輾轉(zhuǎn)除法取余數(shù)

    其他進(jìn)制轉(zhuǎn)10進(jìn)制是從右往左加上基數(shù)的指定次方然后求和

    # 轉(zhuǎn)換方式像公式定律,固定

 二進(jìn)制表示

  分為有符號(hào)和無(wú)符號(hào)類型,一般是 8 16 32 64 Bit 表示整數(shù)或浮點(diǎn)數(shù)

  有符號(hào)最高位表示符號(hào),就是最左邊的比特位,0表示正1表示負(fù)數(shù) 正負(fù)下標(biāo)位0和1

  有符號(hào)位表示范圍,因?yàn)橐殖蓛砂?,一半表示正?shù)一半表示負(fù)數(shù),

  說(shuō)白了是去除一位表示符號(hào)位 -2**(n-1) - 2**n(n-1) -1, n = 8/16/32/64

  無(wú)符號(hào)位表示 0到2**n -1

  # 長(zhǎng)度不一樣,分為1/2/4/8字節(jié)

Py字符對(duì)應(yīng)ASCII數(shù)字函數(shù)

  ord()

字符編碼

  語(yǔ)言文字 ---> 數(shù)字 ---> 0 1二進(jìn)制

  # 這個(gè)映射關(guān)系表被稱為字符編碼

  # 字符編碼解決的問(wèn)題是字符與十進(jìn)制之間映射關(guān)系,人為定義的

  中國(guó) gb2312 -> GBK 中文2字節(jié),英文1個(gè)字節(jié)

  國(guó)際 Unicode(2-4個(gè)字節(jié)) -> UTF-8(1-4個(gè)字節(jié))

    1. 支持全球語(yǔ)言字符

    2. 包含全球字符編碼映射

    # 全球各國(guó)語(yǔ)言可以轉(zhuǎn)成Unicode,Unicode可以轉(zhuǎn)全球各個(gè)國(guó)家語(yǔ)言

    3. 全球軟/硬件都支持Unicode

  主流 UTF-8

    因?yàn)閁nicode表示一個(gè)字符需要至少2個(gè)字節(jié),那么原來(lái)用ASCII只需要一個(gè)字節(jié),

    現(xiàn)在使用Unicode編碼則存儲(chǔ)與進(jìn)行網(wǎng)絡(luò)傳輸需要的存儲(chǔ)空間直接翻倍,不可接受

    UTF-8為了解決這個(gè)問(wèn)題,于是走上了歷史舞臺(tái),那好,網(wǎng)絡(luò)傳輸和存儲(chǔ)使用

    UTF-8,操作系統(tǒng)支持Unicode,那么高效傳輸、存儲(chǔ)和支持全球語(yǔ)言體系成為可能

Python中編碼

  首先說(shuō)說(shuō)Python中編碼到底是何方神圣?

  我們看存儲(chǔ)代碼的文件和代碼加載到內(nèi)存然后被解釋器處理的文件

  我們敲的代碼,其實(shí)本質(zhì)上是文本數(shù)據(jù)

  文本數(shù)據(jù)要通過(guò)某一編碼表轉(zhuǎn)換成二進(jìn)制然后存儲(chǔ)到硬盤上

  存儲(chǔ)在電腦上的二進(jìn)制數(shù)據(jù)也需要編碼表才能轉(zhuǎn)換成文本數(shù)據(jù)

Python中編碼是怎么回事?

  Py3中默認(rèn)文件編碼為UTF-8, 我們通過(guò)編輯器編輯文件的時(shí)候也會(huì)有個(gè)默認(rèn)編碼

  一般默認(rèn)為UTF-8,如果定義的文件中文本數(shù)據(jù)不是以UTF-8編碼,則需要在Py文

  件的頭行告訴Py解釋器這個(gè)文件是以何種編碼。

  解釋器讀取的并不是我們看到的編輯器里面的文本數(shù)據(jù),而是存儲(chǔ)在硬盤上的01
  一樣的二進(jìn)制數(shù)據(jù),解釋器嘗試用默認(rèn)UTF-8編碼解碼讀取到硬盤中的二進(jìn)制數(shù)
  據(jù),轉(zhuǎn)換成文件數(shù)據(jù),如果非默認(rèn)utf-8則出現(xiàn)亂碼,解釋器對(duì)文本數(shù)據(jù)解析失敗,
  則需要在Py源文件開(kāi)頭指定當(dāng)前文件的編碼格式,告訴Py解釋器如何去轉(zhuǎn)換該文件

  Py解釋器默認(rèn)編碼是Unicode,解釋器會(huì)把讀取到的二進(jìn)制數(shù)據(jù)通過(guò)字符編碼轉(zhuǎn)
  換成文件數(shù)據(jù)然后再次轉(zhuǎn)換為Unicode編碼,只要操作系統(tǒng)支持Unicode,解釋器
  都能正常執(zhí)行并輸出結(jié)果

  解釋器

    二進(jìn)制數(shù)據(jù) -> 查字符編碼表 -> 文本數(shù)據(jù) -> Unicode編碼的文本數(shù)據(jù)

  編輯器

    二進(jìn)制數(shù)據(jù) -> 查字符編碼表 -> 對(duì)應(yīng)編碼表的文本數(shù)據(jù)

  # 解釋器和編輯器都是從文件的二進(jìn)制數(shù)據(jù)開(kāi)始的,通過(guò)編碼轉(zhuǎn)換成對(duì)應(yīng)的文本

  # 數(shù)據(jù),不過(guò)解釋器會(huì)會(huì)在文件數(shù)據(jù)的基礎(chǔ)上解析文本數(shù)據(jù)成底層機(jī)器指令并執(zhí)行

  需要弄清楚的是Py源文件編碼和Py解釋器默認(rèn)編碼不一致

  # Py源文件編碼默認(rèn)UTF-8,Py解釋器默認(rèn)編碼為Unicode

那么,產(chǎn)生亂碼的解決問(wèn)題的思路就很好解決了

  # 亂碼 - 字符編碼指定錯(cuò)誤,存儲(chǔ)的二進(jìn)制轉(zhuǎn)換成文本文件選擇的字符集錯(cuò)誤

  1. C/S 架構(gòu)的軟件,檢查 Client 和 Server默認(rèn)編碼是否一致

  2. Web后端,數(shù)據(jù)庫(kù)默認(rèn)編碼、表的編碼和各個(gè)語(yǔ)言連接數(shù)據(jù)庫(kù)接口的編碼是否一致

  3. 文件,檢查編輯器的默認(rèn)編碼是否和文件初始編碼一致,什么編碼就存什么編碼讀

Python聲明源文件字符編碼的方式

  1. # conding:utf-8

  2. # -*- conding:utf-8 -*-

  # 都是以 # 開(kāi)頭,寫在源文件頂行

# -*- coding:utf-8 -*-
# coding: utf-8

總結(jié)

到此這篇關(guān)于關(guān)于Python字符編碼與二進(jìn)制不得不說(shuō)的一些事的文章就介紹到這了,更多相關(guān)Python字符編碼與二進(jìn)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pyspark自定義UDAF函數(shù)調(diào)用報(bào)錯(cuò)問(wèn)題解決

    pyspark自定義UDAF函數(shù)調(diào)用報(bào)錯(cuò)問(wèn)題解決

    這篇文章主要為大家介紹了pyspark自定義UDAF函數(shù)調(diào)用報(bào)錯(cuò)問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python?LeNet網(wǎng)絡(luò)詳解及pytorch實(shí)現(xiàn)

    Python?LeNet網(wǎng)絡(luò)詳解及pytorch實(shí)現(xiàn)

    LeNet主要用來(lái)進(jìn)行手寫字符的識(shí)別與分類,并在美國(guó)的銀行中投入了使用。本文主要為大家詳細(xì)介紹了LetNet以及通過(guò)pytorch實(shí)現(xiàn)LetNet,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • django admin 自定義替換change頁(yè)面模板的方法

    django admin 自定義替換change頁(yè)面模板的方法

    今天小編就為大家分享一篇django admin 自定義替換change頁(yè)面模板的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • wxPython的安裝與使用教程

    wxPython的安裝與使用教程

    wxPython是Python語(yǔ)言的一套優(yōu)秀的GUI圖形庫(kù)。wxPython可以很方便的創(chuàng)建完整的、功能鍵全的GUI用戶界面。這篇文章給大家介紹了wxPython的安裝與使用,感興趣的朋友一起看看吧
    2018-08-08
  • Python生成MD5值的兩種方法實(shí)例分析

    Python生成MD5值的兩種方法實(shí)例分析

    這篇文章主要介紹了Python生成MD5值的兩種方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python實(shí)現(xiàn)MD5加密的常見(jiàn)操作技巧,需要的朋友可以參考下
    2019-04-04
  • 使用tensorboard可視化loss和acc的實(shí)例

    使用tensorboard可視化loss和acc的實(shí)例

    今天小編就為大家分享一篇使用tensorboard可視化loss和acc的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python pyecharts Line折線圖的具體實(shí)現(xiàn)

    Python pyecharts Line折線圖的具體實(shí)現(xiàn)

    折線圖在很多圖標(biāo)中都有使用,本文主要介紹了Python pyecharts Line折線圖的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 利用Python繪制創(chuàng)意中秋節(jié)月餅

    利用Python繪制創(chuàng)意中秋節(jié)月餅

    又是一年中秋至——花好月圓夜。turtle庫(kù)作為Python重要的標(biāo)準(zhǔn)庫(kù)之一,是最有價(jià)值的程序設(shè)計(jì)入門實(shí)踐庫(kù),它是程序設(shè)計(jì)入門層面最常用的基本繪圖庫(kù)。本文將使用turtle(海龜)來(lái)繪制中秋創(chuàng)意月餅,感興趣的可以了解一下
    2022-09-09
  • python實(shí)現(xiàn)圖片,視頻人臉識(shí)別(opencv版)

    python實(shí)現(xiàn)圖片,視頻人臉識(shí)別(opencv版)

    這篇文章主要介紹了python實(shí)現(xiàn)圖像,視頻人臉識(shí)別(opencv版)的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Python對(duì)切片命名的實(shí)現(xiàn)方法

    Python對(duì)切片命名的實(shí)現(xiàn)方法

    在本篇文章里我們給大家分享了關(guān)于Python對(duì)切片命名的實(shí)現(xiàn)方法的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2018-10-10

最新評(píng)論

皮山县| 鱼台县| 普定县| 泰和县| 师宗县| 开原市| 涡阳县| 丹江口市| 格尔木市| 岱山县| 固阳县| 浦东新区| 涟源市| 娄底市| 宜兴市| 玛多县| 德令哈市| 黄山市| 肥西县| 绥棱县| 卓尼县| 武平县| 稷山县| 新疆| 施秉县| 壤塘县| 惠来县| 蒙阴县| 桦川县| 方城县| 龙岩市| 洪江市| 富阳市| 基隆市| 原阳县| 开鲁县| 大丰市| 通城县| 白城市| 金沙县| 台中市|