我正在寻找javascript中的无损压缩算法(如LZW或Huffman或其他任何东西),它接受并返回原始的二进制数据。
“二进制数据”是指一系列字节,可以采用以下任何一种形式:
现在显然有各种各样的javascript实现可用于各种算法。然而,我发现的一切似乎都是疯狂的东西,如:
返回一个包含值> 255的数组(那么现在压缩率是多少?我如何以字节为单位表示这个,或者我如何将其保存到文件中?)
搞乱字符串中的字符编码,从/转换为unicode或url / html实体或诸如此类的东西(它的BINARY,字符编码在这里不适用!)
返回其他不适合二进制存储的表示(即无法转换为字节序列)
有人知道一个适合我的二元恋物癖的好的javascript压缩(+解压缩)实现吗?
答案 0 :(得分:1)
我认为我毕竟找到了我想要的东西:this deflate + inflate implementation in javascript似乎使用字符串作为字节序列。
答案 1 :(得分:-3)
首先创建一个用于保存二进制或十六进制或十进制标志的闭包
function ASearch() { }
ASearch.Flag = {
Front_Wheel_Drive: 0xF, Rear_Wheel_Drive: 0xF0, Four_Wheel_Drive: 0xF00,
Auto: 0xFF, Manual: 0xFF00,
Gas: 0xF, Diesel: 0xF0, Hybrid: 0xF00, Electrical: 0xF000,
Two: 1, Three: 2, Four: 4, Five: 8, Six: 16, Eight: 32, Ten: 64, Twelve: 128
};
然后像这样设置
SetFlag = (function (e) {
e = e.srcElement;
$("#" + e.parentNode.name).val(e.checked ?
$("#" + e.parentNode.name).val() | ASearch.Flag[e.id] :
$("#" + e.parentNode.name).val() ^ ASearch.Flag[e.id]);
});
这是32位整数
中打包数据的示例有四个变量...我已经将它们用于18个标志..这是快速且超级有效的
例如......
int i = 0; //binary = 0000 0000 0000 0000
i = i | 255; //binary = 0000 0000 1111 1111
i = i ^ 255; //binary = 0000 0000 0000 0000
i = i | 0xFF00; //binary = 1111 1111 0000 0000
i = i | 255; //binary = 1111 1111 1111 1111
i = i ^ 0xFF00; //binary = 0000 0000 1111 1111