- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在 Internet 上查找,但在 PHP 中找不到可处理这些 javascript 函数输出的数据的 LZW 解压缩实现:
function lzw_encode(s) {
var dict = {};
var data = (s + "").split("");
var out = [];
var currChar;
var phrase = data[0];
var code = 256;
for (var i=1; i<data.length; i++) {
currChar=data[i];
if (dict[phrase + currChar] != null) {
phrase += currChar;
}
else {
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
dict[phrase + currChar] = code;
code++;
phrase=currChar;
}
}
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
for (var i=0; i<out.length; i++) {
out[i] = String.fromCharCode(out[i]);
}
return out.join("");
}
function lzw_decode(s) {
var dict = {};
var data = (s + "").split("");
var currChar = data[0];
var oldPhrase = currChar;
var out = [currChar];
var code = 256;
var phrase;
debugger;
for (var i=1; i<data.length; i++) {
var currCode = data[i].charCodeAt(0);
if (currCode < 256) {
phrase = data[i];
}
else {
phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
}
out.push(phrase);
currChar = phrase.charAt(0);
dict[code] = oldPhrase + currChar;
code++;
oldPhrase = phrase;
}
return out.join("");
}
我真的只需要一个 PHP 中的解压缩算法,它可以与上面的压缩 javascript 函数一起使用。
上面的 lzw_encode 函数将“This is a test of the compression function”编码为“This Ă a test ofĈhe comprĊsion functěn”
我发现的库要么有问题 (http://code.google.com/p/php-lzw/),要么不接受 UTC 字符的输入。
如有任何帮助,我们将不胜感激
谢谢!
最佳答案
我已经为您将它移植到 PHP 并对其进行了测试:
function lzw_decode($s) {
mb_internal_encoding('UTF-8');
$dict = array();
$currChar = mb_substr($s, 0, 1);
$oldPhrase = $currChar;
$out = array($currChar);
$code = 256;
$phrase = '';
for ($i=1; $i < mb_strlen($s); $i++) {
$currCode = implode(unpack('N*', str_pad(iconv('UTF-8', 'UTF-16BE', mb_substr($s, $i, 1)), 4, "\x00", STR_PAD_LEFT)));
if($currCode < 256) {
$phrase = mb_substr($s, $i, 1);
} else {
$phrase = $dict[$currCode] ? $dict[$currCode] : ($oldPhrase.$currChar);
}
$out[] = $phrase;
$currChar = mb_substr($phrase, 0, 1);
$dict[$code] = $oldPhrase.$currChar;
$code++;
$oldPhrase = $phrase;
}
var_dump($dict);
return(implode($out));
}
关于PHP LZW二进制解压函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10342963/
LZW 压缩算法在压缩后增加了位大小: 这是压缩函数的代码: // compression void compress(FILE *inputFile, FILE *outputFile) {
我正在寻找可以压缩和解压缩word文档的c#中的LZW压缩算法。我在谷歌上搜索过它,但它没有给我我需要的答案。任何人都可以帮助我获得它的代码并让我了解如何在我的项目中真正实现 LZW。 最佳答案 有一
我试图让这段代码正常工作,但当我尝试编码时,它似乎无法正常工作。我有一个 60 字节的文本文件。我对其进行编码,输出文件为 100 字节。当我解码该文件时,它变成了 65 字节。它解码正确,但文件大小
我很难理解 LZW 算法。我正在检查维基百科 (http://en.wikipedia.org/w/index.php?title=Lempel-Ziv-Welch&oldid=245292660)
好吧,我必须使用 LZW 算法制作一个 PPM 图像压缩器,我理解该算法和代码并实现了一个字符串版本(在 Java 中,用于测试)。 最大的问题是压缩,因为如果我有: 输入:ABCDABCDABCDA
我目前正在将 LZW 压缩和解压缩方法从 FFmpeg 源代码实现到我的项目。我偶然发现的是输出缓冲区的大小(将存储压缩数据的地方)需要大于我们要压缩的输入缓冲区的大小。这与压缩本身不矛盾吗? 下一部
我找到了 LZW 算法的实现,我想知道如何将其输出(一个 int 列表)表示为字节数组。 我曾尝试使用一个字节,但在长输入的情况下,字典有超过 256 个条目,因此我无法转换。 然后我尝试添加一个额外
我正在编写一个 C 库来将 SDL_Surfaces 导出为各种格式作为练习,到目前为止,我已经搞定了 BMP、TGA 和 PCX 格式。现在我正在制作 GIF格式,我觉得我已经非常接近让它发挥作用了
我正在尝试实现LZW压缩和解压缩技术。我的程序将任何文件作为输入流并将其读入字节数组。然后,它对其应用压缩算法,并在字符串变量中返回编码字节。 然后我应用解压缩算法返回原始数字。 现在为了检索原始文件
我有一个 LZW 算法 - private void start(int maxNumBits) throws IOException{ System.out.println("Beginni
谁能告诉我如何用 c 语言构建 LZW 压缩树?是不是像 结构树{ 短下一个[255]; } 最佳答案 LZW 的树更像是一本字典。每个条目由一个代码(索引)和一个字符组成。树在逻辑上用所有字符初始化
我希望更改 LZW 压缩器,使其能够在 LZW 编码文件中搜索单词并查找该搜索词的匹配数。例如,如果我的文件用作 Prompt:>lzw "searchterm" encoded_file.lzw 3
我做了一些研究,但没有什么真正与我的问题有关...... 我实际上正在尝试为学校编写 LZW 压缩代码,并且我需要一个函数来检查某个元素是否在我的字典中。 但是,当我调用这个函数时,它尝试访问我的字典
这里是函数本身。我在那里遇到了段错误,因为显然我无法将字符串分配给数组中的该值。 clang/gcc 都给我一个警告。 Clang 的好一点,它是“期望 char 分配 char *”。我不知道还有什
我有以下形式的字符串(大约 1-5Kb): FF,A3V,X7Y,aA4,.... lzw 非常好地压缩这些,但包含土耳其字符。然后将它们提交到 MySQL 数据库。 有时 MySQL 可能会“播放”
我正在编写一个通用的 LZW 解码器 c++ 程序,但我无法找到有关所用代码字长度(以位为单位)的文档。我发现一些文章说代码字长 12 位,而其他人说 16 位,还有一些文章说使用可变位长度。那是哪一
所以我正在尝试用 C++ 制作一个简单的文件压缩器/解压缩器(我的目标不是尽可能获得最好的结果)但我真的被卡住了,因为我充满了疑问所以他们在这里: 我应该使用哪种字典(我正在使用 map )?我应该存
CGPDFScanner 会解压缩它遇到的任何 LZW 压缩吗?还是我要为此负责? [我假设它确实如此,因为我正在使用大量的 Tj 运算符等] 最佳答案 是的,CGPDFScanner 将解压缩它找到
当我使用长度为 256 的符号表(字典)时,我的 LZW 压缩工作正常,编码器和解码器都使用 256 并且一切正常但是当我将这个数字增加到例如 512、1024、4096 时,解码文件输出是与第一个输
注意:这不是 LZW 压缩的正确用法。我只是在玩弄它。 问题 在一次传递中,是否可以同时更新字典中元素的频率计数? 我的实现 import sys from collections import de
我是一名优秀的程序员,十分优秀!