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 意味着您需要一个能够解释您的代码的网络服务器。您粘贴的代码段是在 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/

txt2bin接受一个 ASCII 编码的字符串并返回它的二进制表示。

bin2txt接受 0 和 1 的字符串,表示 ASCII 编码字符串的二进制代码,并返回 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 回答