python2 test.py
ascii_term_id? "0500"python3 test.py
ascii_term_id? "b'0500'"我正在尝试让这个函数在python2和3之间工作。Python3的变量中似乎有无关的数据。
我不完全确定这个binascii.b2a_hex在python版本之间是如何工作的:
if os.path.isfile(C + 'file.TMP'):
with open(C + 'file.tmp', 'rb') as eamterms:
sector = eamterms.read(sector_size)
while sector:
if sector_count > 0:
sector = sector[4:sector_size]
for i in range(0, sector_size, record_size):
record = sector[i:record_size + i]
#print(str(record))
# Terminal ID is the key
term_id = record[0:2]
# convert it to ascii
ascii_term_id = binascii.b2a_hex(term_id)
#print(str(ascii_term_id) + " " + str(term_id))
# Skip nulls and the store record
if sector_count == 283:
print('ascii_term_id? "' + str(ascii_term_id) + '"')
print('----------------------------')
quit()发布于 2021-07-20 07:25:40
你应该使用
ascii_term_id.decode()而不是
str(ascii_term_id)代码
print( b'0500'.decode() )
print( str(b'0500') )在Python 2上给出了
0500
0500但是在Python 3上给出了
0500
b'0500'编辑:
你只需要
print('ascii_term_id? "' + ascii_term_id.decode() + '"')因为decode()将bytes转换为string (Python3),而您不再需要str()。
ascii_term_id = b'0500'
print( type( ascii_term_id ) )
print( type( ascii_term_id.decode() ) )
print('ascii_term_id? "' + ascii_term_id.decode() + '"')Python 2:
<type 'str'>
<type 'unicode'>
ascii_term_id? "0500"Python 3
<class 'bytes'>
<class 'str'>
ascii_term_id? "0500"https://stackoverflow.com/questions/68447316
复制相似问题