PHP将二进制翻译为文本并返回

时间:2012-11-09 09:13:24

标签: javascript binary

我想将二进制文件翻译成文本并返回表单,我在谷歌或其他地方找不到任何示例。

我想做这样的事情 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>

1 个答案:

答案 0 :(得分: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/

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