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