我有一个字符串 str
,它可能由 UTF-8 字符组成。我想将其写入精确长度为 N 字节的文件(可能包含填充)。因此,如果 str
比这 N 个字节长,则应将其截断,使其短于 N 个字节,然后用 \0
字节填充到 N 个字节。在Python中有什么好的/快速的方法可以做到这一点吗?
最佳答案
您必须小心,不要在多字节序列的中间切断字节流。这似乎有效:
def fixlen (s, length):
bs = s.encode ('utf-8')
bs = bs [:length]
while True:
try:
bs.decode ('utf-8')
break
except UnicodeDecodeError:
bs = bs [:-1]
return bs + b'\0' * (length - len (bs) )
s = 'LLegó cigüeña'
for length in range (0, 20):
bs = fixlen (s, length)
print (s, bs, bs.decode ('utf-8') )
关于python - 将 UTF-8 字符串调整为字节长度 32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745577/