[英]How do you convert a python sequence item to an integer
我需要將python2.7 bytearray()或string或bytes()的元素轉換為整數以進行處理。 在許多語言(例如C等)中,字節和“字符”或多或少是您執行數學運算時要使用的8位整數。 如何說服python讓我交替使用(適當的)字節數組或字符串?
考慮toHex(stringlikeThing):
zerof = '0123456789ABCDEF'
def toHex(strg):
ba = bytearray(len(strg)*2)
for xx in range(len(strg)):
vv = ord(strg[xx])
ba[xx*2] = zerof[vv>>4]
ba[xx*2+1] = zerof[vv&0xf]
return ba
它應該采用類似事物的字符串(例如,字節數組或字符串),並使之成為可打印的類似於十六進制文本事物的字符串。 它將“字符串”轉換為十六進制ASCII:
>>> toHex("string")
bytearray(b'737472696E67')
但是,當給定一個字節數組時:
>>> nobCom.toHex(bytearray("bytes"))
EX ord() expected string of length 1, but int found: 0 bytes
“ for”循環中的ord()獲取strg [xx],這是一個字節數組,它似乎是一個整數(而str的一個項目是單個元素字符串)所以ord()想要一個char(單個)元素字符串)不是int。
是否有一些方法或函數接受一個字節,char,small int,一個元素字符串的參數並返回其值?
當然,您可以檢查類型(strg [xx])並費力地處理案件。
清晰的問題是:為什么Python這么挑剔地看待字節和char(普通或unicode)(即單元素字符串)之間的差異?
當您在python中為bytearray
對象建立索引時,會得到一個整數。 該整數是字節數組中相應字符的代碼,或者說是ord
函數將返回的內容。
python中沒有方法采用字節,字符,小整數或一個元素字符串並在python中返回其值。 但是,制作這種方法將很簡單。
def toInt(x):
return x if type(x) == int else ord(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.