如何将python序列项转换为整数

时间:2016-02-05 23:25:34

标签: python string

我需要将python2.7 bytearray()或string或bytes()的元素转换为整数进行处理。在许多语言(即C等)中,字节和'字符'或多或少是8位整数,您可以执行数学运算。我如何说服python让我可以互换地使用(适当的)bytearrays或字符串?

考虑到Hex(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

应该采用类似于字符串的字符串(即bytearray或string),并使可打印的字符串像十六进制文本一样。它将“string”转换为十六进制ASCII:

>>> toHex("string")
bytearray(b'737472696E67')

然而,当给出一个bytearray时:

>>> nobCom.toHex(bytearray("bytes"))
EX ord() expected string of length 1, but int found: 0 bytes

'for'循环中的ord()获取strg [xx],一个bytearray项,似乎是一个整数(而str的项是单个元素字符串) 所以ord()想要一个char(单个元素字符串)而不是int。

是否有一些方法或函数接受一个byte,char,small int,一个元素字符串的参数并返回它的值?

当然你可以检查类型(strg [xx])并费力地处理这些情况。

清音问题是:为什么(什么是推理)Python对字节和字符(普通或unicode)(即单个字符串)之间的差异如此挑剔?

1 个答案:

答案 0 :(得分:0)

在python中索引bytearray对象时,会得到一个整数。这个整数是bytearray中相应字符的代码,换句话说,就是ord函数返回的东西。

python中没有采用字节,字符,小整数或一个元素字符串的方法,并在python中返回它的值。然而,制作这样的方法很简单。

def toInt(x):
     return x if type(x) == int else ord(x)