LZWデコンプレッサをphpにあるJSendからjavascriptに変換しようとしていますが、理解できない関数に到達しました。
private static function decompressLZW($aCodes)
{
$sData = '';
$oDictionary = range("\x0000", "\xff");
foreach ($aCodes as $sKey => $iCode)
{
$sElement = $oDictionary[$iCode];
if (!isset($sElement))
$sElement = $sWord . $sWord[0];
$sData .= $sElement;
if ($sKey)
$oDictionary[] = $sWord . $sElement[0];
$sWord = $sElement;
}
return $sData;
}
これは私がこれまでにjavascriptで持っているものですが、これをjavascriptで実行すると、sWord
定義されていないという文句が表示され、php関数を見ると、これがエラーを生成しない方法がわかりませんか?
これが私がこれまでにjavscriptに持っているものです:
function decompressLZW(aCodes) {
var sData = '';
var oDictionary = [];
for (var i = 0; i < 256; i++) {
oDictionary[String.fromCharCode(i)] = i;
}
for(var i=0, iLn = aCodes.length; i < iLn; i++) {
var sElement = oDictionary[aCodes[i]];
if(!sElement) {
sElement = sWord + sWord[0];
}
//some magic needs to happen here
}
return sData;
}