我在这里有一个小脚本,我需要一些帮助:
for song in songs:
slash = song.rindex('\\')
songbyte = slash + 2
if len(str(songbyte)) < 2:
#if songbyte < 10:
songbyte = "0" + str(songbyte)
f.write(binascii.a2b_hex(songbyte))
else:
f.write(binascii.a2b_hex("{0:x}".format(songbyte)))
f.close()
return
首先,我正在尝试编写一个播放列表。出于测试目的,我正在编写一个包含 49 首歌曲的歌曲——歌曲是我正在迭代的包含 49 首歌曲的列表
我需要编写歌曲字节——它的值范围从 8 到 72。目前我只是迭代并确保它对每个歌曲字节都有正确的值(它是一个已知正确播放列表的副本,验证通过 diff 和十六进制编辑器)。
我的问题是这条线
print(binascii.a2b_hex("{0:x}".format(songbyte)))
抛出“TypeError:奇数长度的字符串”。现在,这已经足够描述了。通过调查,我确定它会出错时的songbyte的值是8。但是没有意义的是,这个错误发生在列表中的37首歌曲中,并且大部分其他歌曲的songbytes也是 8 - 并且被我的 len(str(songbyte)) < 2 检查添加了 0 - 但奇怪的是这个没有。
虽然我希望,但我不确定这是否足以帮助我解决问题,尽管我认为我不能提供整个脚本的完整细节,但我不能。还有另一种方法可以将歌曲字节(以十六进制形式)写入文件吗?