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