gpt4 book ai didi

PHP将位数组压缩为可能的最短字符串

转载 作者:行者123 更新时间:2023-12-02 17:45:53 24 4
gpt4 key购买 nike

我有一个数组,其中包含代表真值或假值的 1 或 0 值。例如

array(1,0,0,1,0,1,1,1,1);

我想将这个数组压缩/编码成尽可能短的字符串,以便它可以存储在空间受限的地方,例如 cookie。它还需要能够在以后再次解码。我该怎么做?

附言。我在 PHP 工作

最佳答案

这是我的建议:

$a = array(1,0,0,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1);

$compressed = base64_encode(implode('', array_map(function($i) {
return chr(bindec(implode('', $i)));
}, array_chunk($a, 8))));

var_dump($compressed); // string(8) "l8vlBw=="

所以你得到每 8 个字符(实际上是二进制 0..255),将它们转换为整数,表示为 ASCII 字符,将其分解为字符串并转换为 base64能够将其保存为字符串。

更新:

相反的很简单:

$original = str_split(implode('', array_map(function($i) {
return decbin(ord($i));
}, str_split(base64_decode($compressed)))));

我到底是怎么写的(以防万一有人对如何编写这种不可读且几乎无法维护的代码感兴趣):

我已经编写了 $original = $compressed; 并开始逐步反转此表达式的正确部分:

  1. 从base64解码为二进制字符串
  2. 拆分成一个数组
  3. 将每个字符转换为 ASCII 码
  4. 将十进制ASCII码转换为二进制
  5. 将所有二进制数合并为一个数
  6. 将长二进制字符串拆分为数组

关于PHP将位数组压缩为可能的最短字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15023213/

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