當前位置:首頁 » 編程語言 » python字元轉十六進制

python字元轉十六進制

發布時間: 2023-02-24 17:56:24

A. python 16進制字元串怎麼轉換成16進制整數

hex_str = "0xff"
hex_int = int(hex_str, 16)
print(hex_int)#255

B. python我怎麼把數組裡面的每個字元串轉換成16進制數啊

  1. 先把字元串轉化為數字格式,

  2. 再用hex()把十進度數字轉化為十六進制數

代碼如下:

source=['1','2','3','4']
destination=[]
foriteminsource:
destination.append(hex(int(item)))
print(destination)

輸出如下:

['0x1','0x2','0x3','0x4']

C. #Python爬蟲 如何將網址中的漢字轉換成16進制字元串

  • from urllib.parse import quote

  • main_url = "https://ke..com/item"

  • universitys = ["北京航空航天大學", "清華大學", "武漢大學", "華中科技大學"]

  • for university in universitys:

  • url = f"{main_url}/{quote(university)}"

  • print(url)

結果如下:

https://ke..com/item/%E5%8C%97%E4%BA%AC%E8%88%AA%E7%A9%BA%E8%88%AA%E5%A4%A9%E5%A4%A7%E5%AD%A6

https://ke..com/item/%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6

https://ke..com/item/%E6%AD%A6%E6%B1%89%E5%A4%A7%E5%AD%A6

https://ke..com/item/%E5%8D%8E%E4%B8%AD%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%A6

D. 關於python如何實現各進制轉換的總結大全

ctf經常遇到進制轉換的問題,就正好做一個進制轉換總結,分享出來供大家參考學習,下面來一起看看詳細的介紹:
字元串與十六進制轉換

例如網路ctf 12月的第二場第一個misc
?

1

626536377D

比較簡單的一種做法就是直接調用字元串的.decode('hex')解密即可, 但如果不用這個函數你會怎麼解呢?
一種思路就是先2個分組,解出每組的ascii值,合並下字元串即可得到,具體代碼如下
?

1234567

import res='626536377D's = re.findall(r'.{2}',s)s = map(lambda x:chr(int(x,16)),s)print ''.join(s)>>>flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}

前面說了字元串的decode('hex')函數,另外還有兩個轉16進制的函數,這里都總結一下
內置函數hex()

只能轉換10進制整數為十六進制,不能轉字元串
binascii庫的hexlify()和b2a_hex()

這兩個函數的功能是將字元串轉換成十六進制,對應的解密函數分別為 unhexlify()和a2b_hex()
進制互轉

二進制,八進制,十六進制轉10進制比較簡單,直接調用

int函數
?

1

int(str,base) //返回十進制整數,但注意此時第一個參數為字元串

對應的解密函數分別是
?

12345

bin() //10進制轉二進制 oct() //十進制轉八進制 hex() //十進制轉十六進制

但二進制直接轉16進制就需要多走一步了,先用int轉十進制,在用上面提到的hex()函數將十進制轉換成十六進制,比較精簡的寫法是
?

1

map(lambda x:hex(int(x,2)),['0011']) //lambda表達式

或者是
?

1

[hex(int(x,2)) for x in ['0011']] //列表解析

對應的解密函數就是
?

1

map(lambda x:bin(int(x,16)),['ef'])

最後在附上自己用python寫的一個進制轉換小工具,主要功能是對一組二進制,或者ascii,或十六進制轉換成字元串,想必ctf上也經常會遇到這類題型吧
?

041424344

# make by 江sir#coding:utf-8import reimport argparse def bintostr(text): text = text.replace(' ','') text = re.findall(r'.{8}',text) s = map(lambda x:chr(int(x,2)),text) #批量二進制轉十進制 flag = ''.join(s) return flag def asciitostr(text): if ' ' in text: text = text.split(' ') elif ',' in text: text = text.split(',') s = map(lambda x:chr(int(x)),text) flag = ''.join(s) return flag def hextostr(text): text = re.findall(r'.{2}',text) #print text s = map(lambda x:chr(int(x,16)),text) #print s flag = ''.join(s) return flag if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-b") parser.add_argument("-a") parser.add_argument("-x") argv = parser.parse_args() #print argv if argv.b: res = bintostr(argv.b) elif argv.a: res = asciitostr(argv.a) elif argv.x: res = hextostr(argv.x) print res

用法:
十六進制轉字元串:

626536377D
?

12

bintostr.py -x "626536377D"flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}

二進制轉字元串:

可以有空格,也可以無空格
00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100
?

12

bintostr.py -b "00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100"/.txt

ascii轉字元串

可以是空格分隔,也可以是,分隔
s='45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32'
?

12

bintostr.py -a "45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32"-.-. - ..-. .-.. ... -... ..--.- -... ... .-..

以上實例均來自某些ctf賽題
總結

E. 如何用Python將十進制數字轉為二進制,以及將二進制轉為十六進制

1、將十進制轉換成二進制,利用bin()方法。

F. python怎麼把字元串變成數字格式化

1. python 字元與數字如何轉換
python中字元與數字相互轉換用chr()即可。

python中的字元數字之間的轉換函數

int(x [,base ]) 將x轉換為一個整數

long(x [,base ]) 將x轉換為一個長整數

float(x ) 將x轉換到一個浮點數

plex(real [,imag ]) 創建一個復數

str(x ) 將對象 x 轉換為字元串

repr(x ) 將對象 x 轉換為表達式字元串

eval(str ) 用來計算在字元串中的有效Python表達式,並返回一個對象

tuple(s ) 將序列 s 轉換為一個元組

list(s ) 將序列 s 轉換為一個列表

chr(x ) 將一個整數轉換為一個字元

unichr(x ) 將一個整數轉換為Unicode字元

ord(x ) 將一個字元轉換為它的整數值

hex(x ) 將一個整數轉換為一個十六進制字元串

oct(x ) 將一個整數轉換為一個八進制字元串

chr(65)='A'

ord('A')=65

int('2')=2;

str(2)='2'

(6)python字元轉十六進制擴展閱讀:

python數字轉換為字元串主要包括兩種形式:第一種是str(),將值轉換為用戶便於閱讀的形式;另一種是repr(),將值轉換為合法的python表達式。

>>> print repr("Hello, world!")

'Hello, world!'

>>> print repr(10000L)

10000L

>>> print str("Hello, world!")

Hello, world!

>>> print str(10000L)
2. python怎麼實現字元串和數字的轉換
#py3

from functools import rece

DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

def char2num(s): #單個字元轉數字

return DIGITS[s]

def str2int(s):#整數字串轉化整數,不支持浮點數.浮點數得另寫一個

if s[0]=='-': #要判斷一下該數字有沒有符號

return -rece(lambda x,y:10*x+y,map(char2num,s[1::])) #返回負數

else:

return rece(lambda x,y:10*x+y,map(char2num,s)) #返回正數

a='-123'

print(100+str2int(a))
3. 關於python的字元串格式化
在python中也有類似於c中的printf()的格式輸出標記。

在python中格式化輸出字元串使用的是%運算符,通用的形式為格式標記字元串 % 要輸出的值組其中,左邊部分的」格式標記字元串「可以完全和c中的一致。右邊的'值組'如果有兩個及以上的值則需要用小括弧括起來,中間用短號隔開。

重點來看左邊的部分。左邊部分的最簡單形式為:%cdoe其中的code有多種,不過由於在python中,所有東西都可以轉換成string類型,因此,如果沒有什麼特殊需求完全可以全部使用'%s'來標記。

比如:'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])它的輸出為'1 2.3 ['one', 'two', 'three']',就是按照%左邊的標記輸出的。雖然第一個和第二值不是string類型,一樣沒有問題。

在這個過程中,當電腦發現第一個值不是%s時,會先調用整型數的函數,把第一個值也就是1轉成string類型,然後再調用str()函數來輸出。前面說過還有一個repr()函數,如果要用這個函數,可以用%r來標記。

除了%s外,還有很多類似的code:整型數:%d無符號整型數:%u八進制:%o十六進制:%x %X浮點數:%f科學記數法: %e %E根據數值的不同自動選擇%e或%f: %g根據數值的不同自動選擇%E或%f: %G就跟前面說用\進行轉義一樣,這里用%作為格式標記的標識,也有一個%本身應該如何輸出的問題。如果要在」格式標記字元串「中輸出%本身,可以用%%來表示。

上面說的只是格式標記的最簡間的形式,來看復雜一點的:'%6.2f' % 1.235在這種形式中,在f的前面出現了一個類似小數的6.2它表示的意思是,總共輸出的長度為6個字元,其中小數2位。還有更復雜的:'%06.2f' % 1.235在6的前面多了一個0,表示如果輸出的位數不足6位就用0補足6位。

這一行的輸出為'001.24',可以看到小數也佔用一位。類似於這里0這樣的標記還有-、+。

其中,-表示左對齊,+表示在正數前面也標上+號,默認是不加的。最後來看最復雜的形式:'%(name)s:%(score)06.1f' %{'score':9.5, 'name':'newsim'}這種形式只用在要輸出的內容為dictionary(一種python的數據類型)時,小括弧中的(name)和(score)對應於後面的鍵值對中的鍵。

前面的例子可以看到,」格式標記字元串「中標記的順序和"要輸出的值組"中的值是一一對應的,有順序,一對一,二對二。而在這種形式中,則不是,每個格式標記對應哪個值由小括弧中的鍵來指定。

這行代碼的輸出為:'newsim:0009.5'。有時候在%6.2f這種形式中,6和2也不能事先指定,會在程序運行過程中再產生,那怎麼輸入呢,當然不能用%%d.%df或%d.%d%f。

可以用%*.*f的形式,當然在後面的」要輸出的值組「中包含那兩個*的值。比如:'%*.*f' % (6, 2, 2.345)就相當於'%6.2f' % 2.345。

這是這本書到此為止看起來最復雜的內容。不過如果記不住,或不想那麼耐煩,完全可以全部用%s代替,或者用多個"+"來構造類似的輸出字元串。

這里的%真有點除法的味道,怪不得設計者會選擇用%這個除號。象C 中的sprintf函數一樣,可以用「%」來格式化字元串Table 3.1. 字元串格式化代碼格式 描述%% 百分號標記%c 字元及其ASCII碼%s 字元串%d 有符號整數(十進制)%u 無符號整數(十進制)%o 無符號整數(八進制)%x 無符號整數(十六進制)%X 無符號整數(十六進制大寫字元)%e 浮點數字(科學計數法)%E 浮點數字(科學計數法,用E代替e)%f 浮點數字(用小數點符號)%g 浮點數字(根據值的大小採用%e或%f)%G 浮點數字(類似於%g)%p 指針(用十六進制列印值的內存地址)%n 存儲輸出字元的數量放進參數列表的下一個變數中。

G. 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#

H. python 把16進制字元串轉化為16進制數字, 比如『0x0012e』,轉化為0x0012e

Python2.7.13(default,Jan192017,14:48:08)
[GCC6.3.020170118]onlinux2
Type"help","right","credits"or"license"formoreinformation.
>>>s='0x0012e'
>>>b=int(s,16)
>>>b
302
>>>print('{:x}'.format(b))
12e
>>>print('{:#x}'.format(b))
0x12e
>>>print('{:#07x}'.format(b))
0x0012e

熱點內容
雲空間卡密碼是什麼 發布:2024-11-08 00:40:02 瀏覽:950
海康sip伺服器地址怎麼填寫 發布:2024-11-08 00:32:13 瀏覽:394
安通加密 發布:2024-11-08 00:25:51 瀏覽:138
為什麼安卓和蘋果單核差距那麼大 發布:2024-11-08 00:25:50 瀏覽:438
存儲器的種類 發布:2024-11-08 00:14:10 瀏覽:188
戴爾伺服器bios怎麼看日誌 發布:2024-11-08 00:09:56 瀏覽:961
有漁編程下載 發布:2024-11-07 23:56:49 瀏覽:714
漢字在計算機內部存儲 發布:2024-11-07 23:55:20 瀏覽:714
java啟動jar 發布:2024-11-07 23:49:19 瀏覽:607
java方法的參數傳遞參數 發布:2024-11-07 23:37:12 瀏覽:445