<?
 ###############################################################################
 function uudecode_data_block($data){
 if (preg_match("!begin [^\s]+ [^\s]+\n(.*)\nend\n!s", $data, $matches)){
 return uudecode_data($matches[1]);
 }
 }
 ###############################################################################
 function uudecode_data($data){
 $data = preg_replace('![^\x20-\x5f\n]!', '', $data);
 $buffer = '';
 $lines = explode("\n", $data);
 foreach($lines as $line){
 $len = ord($line{0}) - 0x20;
 $cursor = 1;
 while($cursor < strlen($line)){
 $b1 = ord($line{$cursor+0});
 $b2 = ord($line{$cursor+1});
 $b3 = ord($line{$cursor+2});
 $b4 = ord($line{$cursor+3});
 $b1 -= 0x20;
 $b2 -= 0x20;
 $b3 -= 0x20;
 $b4 -= 0x20;
 # b1 b2 b3 b4
 # 87654321 87654321 87654321 87654321 
 # 
 # A: b1(654321)b2(65)
 # B: b2(4321)b3(6543)
 # C: b3(21)b4(654321)
 $a = (($b1 << 2) & 0xFC) | (($b2 >> 4) & 0x03);
 $b = (($b2 << 4) & 0xF0) | (($b3 >> 2) & 0x0F);
 $c = (($b3 << 6) & 0xC0) | (($b4 >> 0) & 0x3F);
 $buffer .= chr($a).chr($b).chr($c);
 $cursor += 4;
 }
 }
 return $buffer;
 }
 ###############################################################################
?>

AltStyle によって変換されたページ (->オリジナル) /