将UTF-8字符串调整为字节长度32

时间:2014-03-30 15:05:16

标签: python string utf-8 bytearray

我有一个字符串str,可能包含UTF-8字符。我想将它写入一个具有N个字节的确切长度的文件(可能包含填充)。因此,如果str比那些N个字节长,则应将其切断,使其短于N个字节,然后用\0个字节填充到N个字节。在python中有没有好/快的方法呢?

1 个答案:

答案 0 :(得分:2)

您必须小心,不要在多字节序列的中间切断字节流。这似乎有效:

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') )