1

バイナリをテキストに翻訳してフォームに戻したいのですが、グーグルなどで例を見つけることができませんでした。

このようなものを作りたかった http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp

検索中にこのコードを見つけましたが、機能しません:#

    <script type="text/javascript">
    //<![CDATA[
    function txt2bin()
    {
        url = 'http://services.webestools.com/txt2bin/txt2bin.js?str='+encodeURIComponent($('ftxt').value);
        var js_effets=document.createElement("script");
        js_effets.setAttribute("type", "text/javascript");
        js_effets.setAttribute("src", url);
        document.getElementsByTagName("script")[0].parentNode.insertBefore(js_effets,document.getElementsByTagName("script")[0]);
        $('frm').style.display='block';
    }
    function bin2txt()
    {
        url = 'http://services.webestools.com/txt2bin/bin2txt.js?str='+encodeURIComponent($('fbin').value);
        var js_effets=document.createElement("script");
        js_effets.setAttribute("type", "text/javascript");
        js_effets.setAttribute("src", url);
        document.getElementsByTagName("script")[0].parentNode.insertBefore(js_effets,document.getElementsByTagName("script")[0]);
        $('frm').style.display='block';
    }
    //]]>
    </script>
4

1 に答える 1

1

本当にPHPでそれをしたいですか?

PHP は、コードを解釈する Web サーバーが必要であることを意味します。貼り付けたスニペットは、ブラウザによって実行される javascript で作成されているため、テストするだけのサーバーは必要ありません。

とにかく、リンクしたようなツールを作成したい場合は、実際には JavaScript で実行する方が効率的です。

変換を行う JavaScript の 2 つの関数:

function txt2bin(txt) {
    var pad = '00000000',
        bin = '',
        c = '';
    for(var i = 0, l = txt.length; i < l; i++) {
        c = txt.charCodeAt(i).toString(2);
        bin += (pad + c).substr(c.length);
    }
    return bin;
}

function bin2txt(bin) {
    var split = bin.match(/.{8}/g),
        txt = '';
    for(var i = 0, l = split.length; i < l; i++) {
        txt += String.fromCharCode(parseInt(split[i], 2));
    }
    return txt;
}

ここでテストしてください: http://jsfiddle.net/S3nB7/

txt2binASCII エンコードされた文字列を受け取り、そのバイナリ表現を返します。

bin2txtASCII エンコード文字列のバイナリ コードを表す 0 と 1 の文字列を取り、ASCII 文字列を返します。

PHP では、これは次のように変換されます。

<?php

function txt2bin($txt) {
    $bin = '';
    for($i = 0, $l = strlen($txt); $i < $l; $i++) {
        $bin .= sprintf('%08b', ord(substr($txt, $i, 1)));
    }
    return $bin;
}

function bin2txt($bin) {
    $split = str_split($bin, 8);
    $txt = '';
    for($i = 0, $l = count($split); $i < $l; $i++) {
        $txt .= chr(bindec($split[$i]));
    }
    return $txt;
}

ここでテスト: http://codepad.org/Y3sFJrR7

于 2012-11-09T10:05:13.393 に答える