簡體   English   中英

如何將python序列項轉換為整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM