當前位置:首頁 » 編程語言 » python16進制unicode

python16進制unicode

發布時間: 2023-01-06 07:47:11

python3 16進制字元串、列表、字元串之間的轉換

在Python操作數據內容時,多數情況下可能遇到下面3種類型的數據處理:

hexstring 如:ƇC532145697A8B6F'

str 如:'x1Cx53x21x45x69x7Ax8Bx6F'

list 如:[0x1C, 0x53, 0x21, 0x45, 0x69, 0x7A, 0x8B, 0x6F]

各種第三方模塊(如pyDes),或者自己寫的介面中,可能存在由於類型不統一需要在這3種數據中來回切換的情況。

需要用到的核心的方法如下:

list() 將對象轉換為list

str() 將對象轉換為str

bytearray() 將對象轉換為bytearray

bytearray.fromhex() 將對象從hexstring轉換為bytearray

binascii.b2a_hex() 將對象從str轉換為hexstring

如:[0x53, 0x21, 0x6A] -> 'x53x21x6a'

方法:list -> bytearray -> str

如:'x53x216a' -> [0x53, 0x21, 0x6A]
方法:逐個字元轉成十進制

如: [0x53, 0x21, 0x6A] -> �A'
方法:list -> bytearray -> str -> hexstring

如: �A' -> [0x53, 0x21, 0x6A]
方法:hexstring -> bytearray -> list

如: �A' -> 'x53x21x6A'
方法:hexstring -> bytearray -> str

以上內容轉自: https://blog.csdn.net/diaoxuesong/article/details/72123415#

Ⅱ python串口16進制問題

顯示沒錯。。1、2、3、4對應的ascii/unicode碼位值分別就是31h,32h,33h,34h

轉回字元顯示可以

print(chr(0x31))#顯示"1"

Ⅲ python遇到『\u』開頭的unicode編碼

web信息中常會遇到「\u4f60\u597d」類型的字元。首先』\u『開頭就基本表明是跟unicode編碼相關的,「\u」後的16進制字元串是相應漢字的utf-16編碼。python里decode()和encode()為我們提供了解碼和編碼的方法。其中decode('unicode_escape')能將此種字元串解碼為unicode字元串。

比如:

有篇講python編碼的文章比較好, http://blog.csdn.net/liuxincumt/article/details/8183391

Ⅳ python3字元串都是什麼編碼

編碼

字元串是一種數據類型,但是,字元串比較特殊的是還有一個編碼問題。

因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時採用8個比特(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進制11111111=十進制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整數是4294967295。

由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

Unicode

Unicode把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。

Unicode標准也在不斷發展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代操作系統和大多數編程語言都直接支持Unicode。

現在,捋一捋ASCII編碼和Unicode編碼的區別:ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組。

字母A用ASCII編碼是十進制的65,二進制的01000001;

字元0用ASCII編碼是十進制的48,二進制的00110000,注意字元'0'和整數0是不同的;

漢字已經超出了ASCII編碼的范圍,用Unicode編碼是十進制的20013,二進制的01001110 00101101。

如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001。

新的問題又出現了:如果統一成Unicode編碼,亂碼問題從此消失了。但是,如果你寫的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就十分不劃算。

所以,又出現了把Unicode編碼轉化為「可變長編碼」的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間:

字元

ASCII

Unicode

UTF-8

A 01000001 00000000 01000001 01000001

中 x 01001110 00101101 11100100 10111000 10101101

從上面的表格還可以發現,UTF-8編碼有一個額外的好處,就是ASCII編碼實際上可以被看成是UTF-8編碼的一部分,所以,大量只支持ASCII編碼的歷史遺留軟體可以在UTF-8編碼下繼續工作。

搞清楚了ASCII、Unicode和UTF-8的關系,我們就可以總結一下現在計算機系統通用的字元編碼工作方式:

在計算機內存中,統一使用Unicode編碼,當需要保存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

用記事本編輯的時候,從文件讀取的UTF-8字元被轉換為Unicode字元到內存里,編輯完成後,保存的時候再把Unicode轉換為UTF-8保存到文件:

瀏覽網頁的時候,伺服器會把動態生成的Unicode內容轉換為UTF-8再傳輸到瀏覽器:

所以你看到很多網頁的源碼上會有類似<meta charset="UTF-8" />的信息,表示該網頁正是用的UTF-8編碼。

Python的字元串

在最新的Python 3版本中,字元串是以Unicode編碼的,也就是說,Python的字元串支持多語言,例如:

>>> print('包含中文的str')
包含中文的str

對於單個字元的編碼,Python提供了ord()函數獲取字元的整數表示,chr()函數把編碼轉換為對應的字元:

1個中文字元經過UTF-8編碼後通常會佔用3個位元組,而1個英文字元只佔用1個位元組。

在操作字元串時,我們經常遇到str和bytes的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。

Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行

#!/usr/bin/env python3# -*- coding: utf-8 -*-

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

格式化:

在Python中,採用的格式化方式和C語言是一致的,用%實現,舉例如下:

format % (...params)
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'

%運算符就是用來格式化字元串的。在字元串內部,%s表示用字元串替換,%d表示用整數替換,%x表示16進制整數,有幾個%?佔位符,後面就跟幾個變數或者值,順序要對應好。如果只有一個%?,括弧可以省略。

格式化整數和浮點數還可以指定是否補0和整數與小數的位數:

>>> '%2d-%02d' % (3, 1)' 3-01'>>> '%.2f' % 3.1415926'3.14'

有些時候,字元串裡面的%是一個普通字元怎麼辦?這個時候就需要轉義,用%%來表示一個%:

>>> 'growth rate: %d %%' % 7'growth rate: 7 %'

Ⅳ python編程(三級)1、編碼、數制

在計算機中使用的是二進制,(為什麼呢,因為二進制計算簡單,可以用電路表示等等很多優點)。但是二進制對閱讀和使用是不友好的,因此需要將二進制轉換為人類使用的語言,英語,中文等,這就是編碼。

最初的編碼就是ASCII編碼,美國信息交換碼。它使用一個位元組,8位二進制,可以表示128個符號。常用的1-9,26個字母以及一些英語符號等。

ascii表是不能表示中文的,因此中文也有專門的編碼,諸如GB2312,GBK等。其它國家也有類似編碼,因此為了方便信息的交流,也就有了統一編碼,Unicode,又叫萬國碼。unicode用0-65535來表示所有字元,Unicode用2-4個位元組存儲。不同的存儲方式,又不同的編碼,這就是UTF-8,UTF-16,UTF-32。utf-8根據字元數字的大小,來決定存儲位元組,存儲英文字元時用1個位元組,存儲漢字時用2個位元組。utf-16,兩個位元組,utf-32,四個位元組。

python3 在內存中使用的是Unicode,萬國碼,默認的編碼是utf-8。

chr() ,轉換為對應Unicode表字元

ord(),轉換為對於Unicode表數字

encode(),編碼,將str轉換為位元組流

decode(),解碼,將位元組流轉換為str

計算機存儲數據的格式是二進制,日常和數學中使用的數字是十進制,為了表達簡化,因此有了十六進制、八進制。

二進制---->十進制---->八進制---》十六進制

10000001  ---》129  ---》201---》81

從上式可以看出來,進制越大,表達更大數時更簡化。

二進制轉十進制  ,按權展開相加

十進制轉二進制,除基取余

二進制轉八進制 ,從右往左,取3位轉換為十進製得到即為8進制,不足3位左邊補0。

八進制轉二進制,每位展開得到3個二進制位

二進制轉十六進制,,從右往左,取4位轉換為十進製得到即為16進制,不足3位左邊補0。

十六進制轉二進制,每位展開得到四個二進制位

int() ,

hex(),轉換為16進制

bin(),轉換為二進制

oct(),轉換為八進制

Ⅵ python 16進制轉字元串

你的16進制的串「C7 EB CE F0 BE C6 BA F3 BC DD B3 B5」是gbk編碼的,通過以下方法可以轉為字元串。

>>>s="C7EBCEF0BEC6BAF3BCDDB3B5"
>>>s=s.replace("","")
>>>prints.decode("hex")
請勿酒後駕車

Ⅶ python常見數據類型

一,python整數類型所表示的數據。

1,一般用以表示一類數值:所有正整數,0和負整數;

2,整型作為最常用的,頻繁參與計算的數據類型,在python3.5中解釋器會自動在內存中創建-5-3000之間的(包含5,不包含3000)整型對象,也就是說在該范圍內,相等都是同一個已經創建好的整型對象。范圍之外的即使相等也表示不同對象,該特性隨python版本而改變,不要過於依賴。

3,bool型繼承了int型,他是int的子類。

4,Python2中有長整型long,數值范圍更大,在python3中已取消,所有整型統一由int表示。

5,參與所有數值計算,數學運算,科學計算。這也是所有編程語言都有的數據類型,因為編程語言生而需要模擬人的思維,藉助數學方式,自動計算、更好的解決大量重復性的事務,因此數值類型、整數類型在編程語言中不可或缺。

6,支持二進制(0b\0B開頭),十進制,八進制(0o\0O),十六進制(0x\0X)

二,python整數和浮點型支持常規的數值運算

整數和浮點數都可參與的運算:+ - * / %(取余) //(整除) **(冪)

Python字元型:

python字元型表示的數據:
python3支持Unicode編碼,由字母、數字和符號組成的形式就叫字元串,更接近或者相同與人們文字元號表示,因此在信息表示和傳遞時它也是最受認可的形式。在程序編寫中也是非常常用,對應的可操作的方法也很多,很有意思。
字元串不可被修改,可以拼接等方法創建新字元串對象;
支持分片和下標操作;a[2:]
支持+拼接,*重復操作和成員關系in/not in;
表示形式:用單引號雙引號包含起來的符號;a = str(『sdfsdfsdf』) 或 r』\t\nabcd』 原始字元,Bytes:b』abcd』;
6,字元串屬於不可變數據類型,內部機制為了節省空間,相同的兩個字元串表示相同的一個對象。a = 『python』 b = 『python』 a is b :True

二, 字元串支持的運算方法

1,capitalize() :首字母大寫後邊的字母小寫 a = 『abcd』 b = a.capitalize() b:Abcd

2,casefold() lower():字母轉換為全小寫

3,center(width,fillchar) :居中,width填補的長度;fillchar添加的字元

a = a.center(10,』_』) //』____abcd____』 默認無fillchar填充空格

4,count(sub,star,end) :字母計數:sub要查詢的字元

5,encode(encoding=』utf-8』,errors=』strict』) 設置編碼

Errors :設置錯誤類型

6,endswith(suffix,star,end) : 若以suffix結尾返回True

7,expandtabs(8) :設置字元串中tab按鍵符的空格長度:』\tabcde』

8,find(sub,star,end) : 返回指定范圍內的字元串下標,未找到返回-1

9,index(sub,star,end) :返回指定范圍字元串下標未找到拋出異常

10,isalnum() :判斷字元串是否是字母或數字,或字母和數字組合

11,isalpha() :判斷是否全是字母

12,isdecimal() :判斷字元串是否是十進制數值

13,isdigit() :判斷字元串是否是數字

14,isidentifier() :判斷字元串中是否包含關鍵字

15,islower() :判斷是否全小寫

16,isnumeric() :判斷全是數字

17,isspace() :判斷是否是空格

18,isupper() 判斷是否大寫

19,istitle() :判斷是否首字母大寫

20,join(iterable) :把可迭代對象用字元串進行分割:a.join(『123』)

21,ljust(width,fillchar);rjust() :左對齊右對齊

22, upper() :將字元串改為大寫

23,split(sep=None,maxsplit=-1) :分割一個字元串,被選中字元在字元串中刪除

『ab1cd1efg』.split(『1』) :[『ab』,』cd』,』efg』]

三,字元串格式化:按照規格輸出字元串

format(*args,**kwargs) :args位置參數,kwargs關鍵字參數

『{0:.1f}』.format(123.468) :格式化參數,小數點後保留1位四捨五入

四,字元串操作符%

1,%s :格式化字元串 『abcd%sdef』%』dddd』

2,%d:格式化整數

3,%o格式化無符號八進制

4,%x格式化無符號十六進制

5,%f格式化定點數

6, %e: 科學計數法格式化定點數

7,%g 根據值大小自動選%f,%e

8, %G E X :大寫形式

五,格式化輔助命令:

m.n :m最小總寬度,n小數點後位數:』%12.4f』%23456.789

六,轉義字元:字元串前r避免轉義:r』\nhello\thi』

\n:換行符

\t:橫向製表符

\':'

\":"

\b:退格符

\r:回車

\v:縱向製表符

\f:換頁符

\o,\x:八進制和十六進制

\0:空字元串

Python列表list

一,Python的列表list類型表示的數據:

Python列表在cpython中被解釋為長度可變的數組,用其他對象組成的連續數組。

列表中元素可以是相同或不同的數據類型;
當列表元素增加或刪除時,列表對象自動進行擴展或收縮內存,保證元素之間沒有縫隙,總是連續的。
Python中的列表是一個序列,也是一個容器類型
創建列表:a = []; b = [1,』python』]; c = list(); d = list((1,3,4,5))
支持切片操作list[start,stop,step]
python列表常用方法
1,append添加單個元素:list.append(object); //a.append(『python』)

2,extend添加可迭代對象: list.extend(iterable); //a.extend(『abcde』/[1,2,3])

3,insert 插入元素:list.insert(index,object): 在index下標前插入元素//a.insert(2,』python』)

4,clear 清空所有元素:list.clear() //a.clear()

5,pop 刪除並返回一個元素:list.pop(index) //默認刪除默認一個元素

remove 刪除指定元素:list.remove(v) ,v元素不存在報錯 //a.remove(『c』)
7,count 返回這個值在列表中數量:list.count(value)

8, 淺拷貝一個新列表:list.()

9,sort:排序list.sort(reverse=False/True) :默認升序

排序函數:sorted(list)

10,reverse: 原地翻轉:list.reverse()

11,index(value,star,stop) :指定范圍內該值下標:list.index(2,0,5)

列表元素訪問
下標訪問:list[1]
For循環遍歷
通過下標修改元素:list[2 ] = 『hello』
列表常用運算符:
1,比較運算符:從第一個元素開始對比

2,+ 拼接一個新列表:l1+ l2

3, 重復操作符:* ,多個列表拼接

成員關系操作符:in/ not in
邏輯運算符:and not or
列表常用的排序方法:
冒泡排序;選擇排序;快速排序;歸並排序

Python元組tuple

一,Python元組tuple數據類型表示的數據:

元組是受到限制的、不可改變的列表;
可以是同構也可以是異構;
元組是序列類型、是可迭代對象,是容器類型。
元組的創建: a = (1,2,3)或a=1,2,3; b = tuple(); c = tuple(iterable)
支持切片操作tuple[start,stop,step]

二,python元組常用方法

1,index(value,star,stop) :指定范圍內該值下標:tuple.index(2,0,5)

2,count(value) :值出現次數

三,支持運算:

1,比較運算符:從第一個元素開始對比

2,+ 拼接一個新元組:l1+ l2

3, 重復操作符:* ,多個元組拼接

4成員關系操作符:in/ not in

邏輯運算符:and not or
四,元組的訪問

下標操作;
For循環遍歷訪問。

Python字典類型

一,Python字典dict表示的數據:{key:value}

可根據關鍵字:鍵快速索引到對應的值;
字典是映射類型,鍵值對一一對應關系,不是序列;
字典元素是無序的;
字典是可迭代對象,是容器類型;
字典的創建:k = {}; k1={『keyword』:object}; k2 = dict();
K3 = dict(mapping); dict=(iterable)

二,字典的訪問:

通過key:k[『key』]

修改key對應的值:K[『key』] = value

For循環遍歷出來的是key;

For循環鍵值對:for I in d.items():

For 循環enumerate: for k,v in enumerate(k1):

In/not in 成員關系查詢鍵不支持查值

三,字典常用方法

get(key,de):獲取值:k.get(key,de) //若不存在則默認輸出de
pop(k,de):刪除一個鍵值對,不存在輸出de,未設置報錯;
keys() :返回字典所有key組成的序列:list(k.keys()) [1,2,3];
values():返回字典所有value組成的序列:list(k.values())
items():返回鍵值對組成的元組為元素的序列:(類set)list(k.items())
update(e):更新字典:e可是字典或兩元素組成的單位元素序列:e=[(5,6),(7,8)];
k.update(e)

clear():清空字典;
popitem()刪除某個鍵值對,若字典為空則報錯
() :淺拷貝
10, fromkeys(iterable,value=None):從可迭代對象創建字典

{}.fromkeys([1,2,3]) -----{1:None,2:None,3:None}

11,setdefault(k,d=None) :若key不存在則生成一個鍵值對

k.setdefault(『keyword』)

Python 集合set

集合表示的數據:
多個元素的無序組合,集合是無序的,集合元素是唯一的;
字典的鍵是由集合實現的;
集合是可迭代對象
集合創建:s = {1,2}; s1 = set(); s2 = set(iterable)
集合元素的訪問:
For 循環將集合所有元素全部訪問一遍,不重復

常用方法:
add(object):s.add(『hi』) 向集合添加一個元素
pop() :彈棧,集合為空則報錯:刪除任意一個元素;
clear():清空集合,返回一個空集合對象;
remove(object):刪除一個元素,不存在和報錯:s.remove(『hi』)
update(集合):更新另一個集合,元素不存在則不更新;
() :淺拷貝
集合的運算:
交集:s1&s2;
差集,補集:s1-s2;
並集:s1|s2;
Issubset():判斷是否是子集:s1.issubset(s2) s1是否s2的集合子集
Issuperset():判斷是否是父集:s1.issuperset()
不可變集合:
Frozenset():返回一個空的不可變集合對象

Frozenset(iterable):

S = frozenset(iterable)

Python序列類型共同特性

一,序列類型共同特性

python序列類型有:str字元串,list列表,tuple元組
都支持下標索引,切片操作;
下標都是從0開始,都可通過下標進行訪問;
擁有相同的操作符
二,支持的函數:

len(obj):返回對象長度;
list(iterable):將可迭代對象轉為列表;
tuple(iterable):將可迭代對象轉為元組;
str(ojb):將任何對象轉為字元串形式;
max(iterable): python3中元素要是同類型,python2中元素可異構:max([『a』,1])
min(iterable):和max類似;
sum(iterable,star=0),求可迭代對象和,默認star為0,元素不能為字元串
sorted(iterable,key=None,reverse=False)
s=[(『a』,3),(『b』,2),(『c』,9)]

sorted(s,key=lambda s:s[1]) //按照數字排序

reversed(sequence):翻轉序列,返回迭代器
enumerate(iterable):返回enumerate對象,其元素都是一個元組(下標,值)
zip(iter1,iter2): zip([1,2],[3,4]) ----[(1,3),(2,4)]

序列類型的切片操作:

Slice:

L[index]; 訪問某個元素;

L[1:4]; 區間

L[star:stop:step]; 設置步長取區間元素

Ⅷ python為什麼中文顯示的都是16進制的

先試試
print each.decode('utf-8').encode('gb18030')

還不行的話,那就需要確認幾個東西:
1, 你的代碼里的字元是什麼編碼的, 比如你的secureCRT是utf8的,那麼它就是utf8的。
2,export LANG=en_US.utf8,這一步是為了讓linux正確的解析位元組流(編碼)以便對應到字元。
3,前兩步之後,通過secureCRT看你輸入的漢字是不會亂碼的。
4,源代碼的coding改成utf8,這是為了讓python解析源代碼時知道如何將字面常量字元串轉到unicode內碼。
5,如果你是py2.x,那麼encode到utf8再輸出。
6,如果你是Py3.x,那麼直接print即可,python3.x會將unicode內碼轉到LANG編碼。

Ⅸ python unicode編碼

python unicode編碼:

下面的代碼創建了一個Unicode字元串,用UTF-8編碼器將它編碼,然後寫入到一個文件中去,接著把數據從文件中讀回來,解碼成Unicode字元串對象,最後,列印出Unicode字元串,用以確認程序正確地運行。

在Linux中編寫,在VIM中輸入如下代碼,保存為uniFile.py

#/home/xiaopeng/python/code/uniFile.py
'''
:Writes
aUnicodestringtoafileinutf-8andreadsitbackin
'''
CODEC='utf-8'編碼方式
FILE='unicode.txt'要存的文件名
hello_out=u"Helloworld "創建了一個Unicode格式的字元串
bytes_out=hello_out.encode(CODEC)用UTF-8編碼
f=open(FILE,'w')
f.write(bytes_out)寫入指定文件中
f.close()
f=open(FILE,'r')
bytes_in=f.read()讀取
f.close()
hello_in=bytes_in.decode(CODEC)解碼
printhello_in列印

在終端中輸入:python uniFile.py

結果列印出 Hello world

然後在python目錄下會發現多了一個名為unicode.txt的文件,用cat命令查看一下,發現裡面的內容和列印的結果一樣.

把Unicode應用到實際中注意一下四點:

1程序中出現字元串時一定要加一個前綴u

2不要用str()函數,用Unicode()代替

3 不要用過時的string模塊。如果傳給它非ASCII碼,它會把一切搞砸。

4 不到必須時不要在你的程序里編解碼Unicode字元,只在你要寫入文件或者資料庫或者網路時,才調用encode()函數和decode()函數。

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:532
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:30
linux485 發布:2025-07-05 14:38:28 瀏覽:310
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:760
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:436
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:716
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:246
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:692
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:288
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:837