我这里有一个小脚本,我需要一些帮助:
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首歌曲的歌曲——songs是一个我正在迭代的列表,其中包含49首歌曲
我需要写songbyte——它是一个从8到72的值。目前,我只是反复检查,确保每个songbyte都有正确的值(它是已知正确播放列表的副本,通过diff和hex编辑器验证)。在
我的问题是这条线
^{pr2}$抛出“TypeError:奇数长度字符串”。现在,这已经足够描述了。通过调查,我确定了songbyte出错时的值是8。然而,没有意义的是,这个错误会出现在列表中的37首歌曲中,而其他歌曲的大多数songbyte也是8——并被我的len(str(songbyte))<;2检查发现,它加了一个0——但奇怪的是,这个没有
虽然我希望,但我不确定这些信息是否足以帮助我解决问题,因为我无法提供整个脚本的完整细节。有没有其他方法可以把songbyte——以十六进制的形式——写入文件?在
您应该使用^{} ,这正是为了这个目的:
格式字符串
^{pr2}$"{0:x}"
不会在数字前插入零,您可能需要"{0:02x}"
。在然而,使用binascii会导致不必要的复杂和脆弱的代码。例如,如果值超过255,它将自动生成2个以上的字符。在
相关问题 更多 >
编程相关推荐