密碼學基礎 常見資料型別轉換set0

2021-10-01 07:03:54 字數 2537 閱讀 2822

初學密碼學就被各種型別轉換的**實現難住了,當時心情可謂備受打擊。所以還是菜鳥的我寫篇部落格記錄一下自己學習到的東西,同時分享給大家。

首先我們得清楚常見的轉換型別的形式。

型別例項

字串str

「hello world」

位元組陣列

b』hello world』 或b』\x1c\x01\x11』

十六進製制字串hex

68656c6c6f20776f726c64

整型int

十進位制位元組陣列和十六進製制字串轉換

1)十六進製制字串轉換為位元組陣列

注:python3與python2在這個轉換上有所不同(我這個憨憨曾經備受困擾)

python2:

python2中decode方法有hex這個引數,而python3中沒有。

def hex_to_bytelist(hexstring):

return [ord(c) for c in hexstring.decode('hex')]

python3:

python3中新增了bytes這個物件型別, bytes.fromhex這個方法可以從十六進製制字串提取十六進製制數並將其轉換為位元組。

def hex_to_bytelist(hexstring):

return bytes.fromhex(hexstring)

2)位元組陣列轉換為十六進製制字串

通用方法:

def bytelist_to_hex(bytelist):

return ''.join(hex(x)[2:] if x>15 else'0'+hex(x)[2:] for x in bytelist)

python3方法

def bytelist_to_hex(bytelist):

return bytelist.hex()

3)其他方法

binascii模組(位元組–>十六進製制位元組)

import binascii

string1=b'hello'

string_hex= binascii.b2a_hex(string1)

print(string_hex)

print(bytes.fromhex('68656c6c6f').decode())

output

b'68656c6c6f'

hello

字串和十六進製制字串的轉換

1)字串轉換為十六進製制字串

python2:

def str_to_hex(string):

return string.encode('hex')

python3: ①利用上面已經定義的函式進行轉換 曲線救國

②引入codecs模組,利用codecs模組中的編碼方法。

思路str—>位元組—>十六進製制字串。(如下**)

def str_to_hex(string):

import codecs

byte1=string.encode('utf-8')

return (codecs.encode(byte1,'hex')).decode('utf-8')

2)十六進製制字串轉換為字串

python2:

def hex_to_str(hexstring):

return hexstring.decode('hex')

python3:

def hex_to_str(hexstring):

return (bytes.fromhex(hex_string)).decode('utf-8')

整型和位元組的轉換

1)將位元組轉換為整型

int.from_bytes(bytes, byteorder, *, signed=false)

功能:res = int.from_bytes(x)的含義是把bytes型別的變數x,轉化為十進位制整數,並存入res中。

原理:bytes—>二進位制數–>十進位制數

引數:int.from_bytes(bytes, byteorder, *, signed=false)

bytes是十六進製制位元組

byteorder有big和little,big是順序,little是倒序 (十六進製制位元組的順序)

sighed=true代表帶正負號(二進位制),false代表不帶符號

返回十進位制數

2)將整型轉換為位元組

int.to_bytes()

功能:是int.from_bytes的逆過程,把十進位制整數,轉換為bytes型別的格式。

以上。

常見資料型別轉換

在最近兩個小專案中大量的使用了資料型別之間的互相轉換,因此寫一篇記述下來以便日後查閱。target 目標資料型別 需求資料型別 source 源資料型別 需轉換資料型別 string轉qstring target qstring fromstdstring source unsigned char ...

VC常見資料型別轉換

我們先定義一些常見型別變數藉以說明 int i 100 long l 2001 float f 300.2 double d 12345.119 char username 女俠程佩君 char temp 200 char buf cstring str variant t v1 bstr t v2...

VC常見資料型別轉換

int i 100 long l 2001 float f 300.2 double d 12345.119 char username 女俠程佩君 char temp 200 char buf cstring str variant t v1 bstr t v2 一 其它資料型別轉換為字串 短整型...