gpt4 book ai didi

algorithm - 如何用少于 2*n 个字符表示一个 n 字节的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:03:30 26 4
gpt4 key购买 nike

假设一个 n 字节的数组可以用 2*n 的十六进制字符串表示,有没有办法用少于 2*n 个字符来表示这个 n 字节的数组?

例如,通常情况下,一个整数(int32)可以被认为是一个4字节的数据数组

最佳答案

十六进制的优点是,将一个 8 位字节分成相等的两半是将字节映射为可打印 ASCII 字符的最简单操作。更有效的方法将多个字节视为一个 block :


Base-64 使用 64 个 ASCII 字符一次表示 6 位。每 3 个字节(即 24 位)被分成 4 个 6 位 base-64 数字,其中“数字”是:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

(如果输入的长度不是 3 个字节的倍数,则第 65 个字符“=”用于末尾的填充)。请注意,base-64 的一些变体形式对最后两个“数字”使用不同的字符。


Ascii85 是另一种表示形式,不太为人所知,但很常用:它通常是二进制数据在 PostScript 和 PDF 文件中的编码方式。这将每 4 个字节(big-endian)视为一个无符号整数,表示为 base 85 中的 5 位数字,每个 base-85 数字编码为 ASCII 代码 33+n(即“!"表示 0,直到 "u"表示 84)- 加上可以使用单个字符 "z"的特殊情况(而不是 " !!!!!") 来表示 4 个零字节。

(为什么是 85?因为 845 < 232 < 855。)

关于algorithm - 如何用少于 2*n 个字符表示一个 n 字节的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com