如何检查字节数组中是否存在字符

2024-03-29 12:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

这听起来太基本了,我不想问,但这就是问题。我有个告别。我想检查数组中是否存在“a”或“a”,并打印它们的计数。我做了以下事情,但我没有看到任何东西,即使我知道里面有“a”—

a_bytes = bytearray.fromhex(hex_string)
count = 0
for x in a_bytes:
    if ( (x=='a') or (x == 'A') ):
        count = count+1

return count

为什么上面的代码不起作用?我把字节值打印成整数,我看到65重复了多次。 然后我再次尝试使用int('a')将常量'a'转换为整数,但是我得到一个错误--

^{pr2}$

Tags: orinforstringreturnifbytescount
3条回答

使用函数ordchr完成字符及其整数值之间的转换。所以ord('A') == 65。在

当字节数组将值存储为int时,结果是

 a_bytes = bytearray.fromhex(hex_string)
 count = sum(c == ord('A') or c == ord('b') for c in a_bytes)

这是因为True1,而{}是{}

如果要处理字符串和字符,需要先对字节数据进行解码:

a_bytes = bytearray.fromhex(hex_string).decode('ascii')
count = 0
for x in a_bytes:
    if x == 'a' or x == 'A':
        count += 1

return count

bytearray中的值存储为整数,而不是十六进制表示。您需要搜索6597,而不是"A"或{}。在

如果你想用这个来查找字符串,只需使用一个列表。如果您对字节的整数值不感兴趣,那么bytearray不是正确的选择。另外,如果使用list,则可以使用list的.count方法直接计算特定值的出现次数。在

相关问题 更多 >