2016-09-26 31 views
0

Hexの値をPHPのEBCDICに変換するにはどうすればよいですか?PHP-HEXからEBCDICへの変換

これを行う最も実際的な方法は何ですか?

Hex : 313233343536373832313332333435 
Ascii: 123456782132345 

使用することにより:

hex2bin($foo); 
+0

をEBCDICからASCIIに機能が内蔵され使用してfの結果は正常です - http://php.net/manual/bg/function.ascii2ebcdic.php –

+0

IISで作業していません – user3165474

答えて

0

の場合)(あなたの `HEX2BIN後`)( `ascii2ebcdicで試してみて、`、私達に私に教え

function ebcdic_to_ascii($ebcdic_hexstring /*expecting something like F0F1....*/) 
    { 
     //need to delcare it to avoid warning 
$ebcd_ascii= null; 
    // here come all the conversion 
$ebcd_ascii["4A"] = "¢"; 
$ebcd_ascii["4B"] = "."; 
$ebcd_ascii["4C"] = "<"; 
$ebcd_ascii["4D"] = "("; 
$ebcd_ascii["4E"] = "+"; 
$ebcd_ascii["4F"] = "|"; 
$ebcd_ascii["5A"] = "!"; 
$ebcd_ascii["5B"] = "$"; 
$ebcd_ascii["5C"] = "*"; 
$ebcd_ascii["5D"] = ")"; 
$ebcd_ascii["5E"] = ";"; 
$ebcd_ascii["5F"] = "¬"; 
$ebcd_ascii["60"] = "-"; 
$ebcd_ascii["61"] = "/"; 
$ebcd_ascii["6A"] = "¦"; 
$ebcd_ascii["6B"] = ","; 
$ebcd_ascii["6C"] = "%"; 
$ebcd_ascii["6D"] = "_"; 
$ebcd_ascii["6E"] = ">"; 
$ebcd_ascii["6F"] = "?"; 
$ebcd_ascii["79"] = "`"; 
$ebcd_ascii["7A"] = ":"; 
$ebcd_ascii["7B"] = "#"; 
$ebcd_ascii["7C"] = "@"; 
$ebcd_ascii["7D"] = "'"; 
$ebcd_ascii["7E"] = "="; 
$ebcd_ascii["7F"] = " '' "; 
$ebcd_ascii["81"] = "a"; 
$ebcd_ascii["82"] = "b"; 
$ebcd_ascii["83"] = "c"; 
$ebcd_ascii["84"] = "d"; 
$ebcd_ascii["85"] = "e"; 
$ebcd_ascii["86"] = "f"; 
$ebcd_ascii["87"] = "g"; 
$ebcd_ascii["88"] = "h"; 
$ebcd_ascii["89"] = "i"; 
$ebcd_ascii["91"] = "j"; 
$ebcd_ascii["92"] = "k"; 
$ebcd_ascii["93"] = "l"; 
$ebcd_ascii["94"] = "m"; 
$ebcd_ascii["95"] = "n"; 
$ebcd_ascii["96"] = "o"; 
$ebcd_ascii["97"] = "p"; 
$ebcd_ascii["98"] = "q"; 
$ebcd_ascii["99"] = "r"; 
$ebcd_ascii["A1"] = "~"; 
$ebcd_ascii["A2"] = "s"; 
$ebcd_ascii["A3"] = "t"; 
$ebcd_ascii["A4"] = "u"; 
$ebcd_ascii["A5"] = "v"; 
$ebcd_ascii["A6"] = "w"; 
$ebcd_ascii["A7"] = "x"; 
$ebcd_ascii["A8"] = "y"; 
$ebcd_ascii["A9"] = "z"; 
$ebcd_ascii["C0"] = "{"; 
$ebcd_ascii["C1"] = "A"; 
$ebcd_ascii["C2"] = "B"; 
$ebcd_ascii["C3"] = "C"; 
$ebcd_ascii["C4"] = "D"; 
$ebcd_ascii["C5"] = "E"; 
$ebcd_ascii["C6"] = "F"; 
$ebcd_ascii["C7"] = "G"; 
$ebcd_ascii["C7"] = "H"; 
$ebcd_ascii["C9"] = "I"; 
$ebcd_ascii["D0"] = "}"; 
$ebcd_ascii["D1"] = "J"; 
$ebcd_ascii["D2"] = "K"; 
$ebcd_ascii["D3"] = "L"; 
$ebcd_ascii["D4"] = "M"; 
$ebcd_ascii["D5"] = "N"; 
$ebcd_ascii["D6"] = "O"; 
$ebcd_ascii["D7"] = "P"; 
$ebcd_ascii["D8"] = "Q"; 
$ebcd_ascii["D9"] = "R"; 
$ebcd_ascii["E0"] = "\\"; 
$ebcd_ascii["E2"] = "S"; 
$ebcd_ascii["E3"] = "T"; 
$ebcd_ascii["E4"] = "U"; 
$ebcd_ascii["E5"] = "V"; 
$ebcd_ascii["E6"] = "W"; 
$ebcd_ascii["E7"] = "X"; 
$ebcd_ascii["E8"] = "Y"; 
$ebcd_ascii["E9"] = "Z"; 
$ebcd_ascii["F0"] = "0"; 
$ebcd_ascii["F1"] = "1"; 
$ebcd_ascii["F2"] = "2"; 
$ebcd_ascii["F3"] = "3"; 
$ebcd_ascii["F4"] = "4"; 
$ebcd_ascii["F5"] = "5"; 
$ebcd_ascii["F6"] = "6"; 
$ebcd_ascii["F7"] = "7"; 
$ebcd_ascii["F8"] = "8"; 
$ebcd_ascii["F9"] = "9"; 
$ebcd_ascii["FF"] = "E0"; 
    //end of conversion 

    // loop until there is no more conversion. 
    $asciiOut = "";  
    while(strlen($ebcdic_hexstring)>1)//F0F1F2F3F -> F1F2F3F 
    { 
     $thisEbcdic = substr($ebcdic_hexstring, 0, 2);//F0->F1 
     //if(!is_null($ebcd_ascii[$thisEbcdic])) 
     $asciiOut = $asciiOut.$ebcd_ascii[$thisEbcdic];//0->01 
     $ebcdic_hexstring = substr($ebcdic_hexstring, 2);//F1F2F3F -> F2F3F 
    }  

    return $asciiOut; 

} 

?> 
2

strtrを使用すると、ASCIIへのマッピングEBCDICを提供する場合、仕事をしなければならない私がこれまでAsciiからhexで何をしたか

アルファベット3文字のための例マッピング:

$ebcdicSet = "\x81\x84\xa2"; 
$asciiSet = "ads"; 

$ebcdic = "\x81\xa2\x84\x81\xa2\x84"; // 6 bytes 
$ascii = strtr($ebcdic, $ebcdicSet, $asciiSet); 

echo $ascii; // outputs "asdasd" 

あなたの入力はバイナリ進が、16進数表現で刺されていない場合、あなたはそれを最初にHEX2BINする必要があります。

$ebcdic = "81a28481a284"; // 12 bytes 
$ascii = strtr(hex2bin($ebcdic), $ebcdicSet, $asciiSet); 
echo $ascii; // outputs "asdasd" 
+0

ありがとうございます。 – user3165474

関連する問題