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

标签 python string utf-8 arrays

我有一个字符串 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/

相关文章:

python - 在python中异步读取和处理图像

python - 为什么这个 Python 脚本会创建一个无限循环? (递归)

c++ - en_US.UTF-8 语言环境的 Windows 等效项是什么?

css - 浏览器中不显示中文字体系列

python - 在 python 中查找子字符串

python - pysqlite:列名或表名的占位符替换?

python - 使用Python从字符串中删除除数字以外的字符?

c++ - 构建一个长字符串作为参数传递给函数

java - Java中将颜色映射到整数的方法

PHP DOMDocument::save() 保存为 ASCII 而不是 UTF-8