PHP中的压缩算法

PHP中的压缩算法,php,algorithm,compression,Php,Algorithm,Compression,我正在学习压缩算法,我的母语是PHP,我可以理解,PHP是一种通常不会在其中生成大型算法的语言,但我想知道这是否可能。(当然有可能-更高效、更强大) 我要尝试的第一种算法是一种简单的自适应算法,通过接收最常用的字节(chars)并将它们转换为二进制类型(ex:a=0001,b=0010,c=0011)-虽然在我熟悉的PHP中没有真正的方法可以做到这一点,在此之前,我使用了简单的ASCII转换,如a=chr(33),b=chr(34),它将获得最小值的ASCII值,并将它们用作压缩定义的最小值->

我正在学习压缩算法,我的母语是
PHP
,我可以理解,PHP是一种通常不会在其中生成大型算法的语言,但我想知道这是否可能。(
当然有可能-更高效、更强大

我要尝试的第一种算法是一种简单的自适应算法,通过接收最常用的字节(
chars
)并将它们转换为二进制类型(
ex:a=0001,b=0010,c=0011
)-虽然在我熟悉的PHP中没有真正的方法可以做到这一点,在此之前,我使用了简单的ASCII转换,如
a=chr(33),b=chr(34)
,它将获得最小值的ASCII值,并将它们用作压缩定义的
最小值->最大值
运算符

所以我想问的是,如果有一种方法可以将二进制值分配给变量,而不是将其表示为ASCII,如果我:

$string_after_compression = 000100100011;
#split it by 4 bits per   = 0001 | 0010 | 0011
这将被解释为一个
int
——因此,使用一个简单的句子生成一个过大的
int
,因此最有可能耗尽可用的ram,然后如果我尝试将值存储在字符串中,这就消除了压缩点,因为它只是生成一个类似以下的字符串:

$string_after_compression = "000100100011";
#split it by 4 bits per   = "0001" . "0010" . "0011";
----

这个问题有点让人困惑,但目的是:有没有一种方法可以使用PHP初始化器分配PHP变量

示例解决方案:

$binary_var = (binary) 0001;

要在PHP中使用二进制文件,您选择的数据类型是字符串。因为字符串只是字节数组:

$bytes = '';
PHP中的二进制代码没有简单的base 2表示法(
0100101
),通常使用二进制代码的次优选项是:

你需要在头脑中来回转换基数2和基数16的符号,但一旦你习惯了这一点,通常比使用长字符串1和0更容易理解和使用

要测试或操作二进制数据,您需要习惯:


要在PHP中使用二进制文件,您选择的数据类型是字符串。因为字符串只是字节数组:

$bytes = '';
PHP中的二进制代码没有简单的base 2表示法(
0100101
),通常使用二进制代码的次优选项是:

你需要在头脑中来回转换基数2和基数16的符号,但一旦你习惯了这一点,通常比使用长字符串1和0更容易理解和使用

要测试或操作二进制数据,您需要习惯:


你看过吗:,如文档中所述,它“返回一个包含给定数字参数二进制表示形式的字符串”,这似乎是你在示例中的目标。是的,我以前看过它,我确实认为它很有趣,可能值得实现,但我猜它从
decbin/bindec
函数返回
int
。:-)你看过吗:,如文档中所述,它“返回一个包含给定数字参数二进制表示形式的字符串”,这似乎是你在示例中的目标。是的,我以前看过它,我确实认为它很有趣,可能值得实现,但我猜它从
decbin/bindec
函数返回
int
。:-)谢谢正在阅读十六进制和2进制表示法,非常感谢您的朋友。:-)谢谢正在阅读十六进制和2进制表示法,非常感谢您的朋友。:-)
if (($bytes[3] & "\x02") === "\x02") {
    // the second bit of the forth byte in the sequence is set (0000 0010)
}

$bytes[6] |= "\x02";  // setting the second bit of the seventh byte