【问题标题】:How to convert HEX to ASCII in ActionScript如何在 ActionScript 中将 HEX 转换为 ASCII
【发布时间】:2015-12-19 02:23:49
【问题描述】:

例如,ActionScript 中是否存在可以将0x4e544c4d 转换为 ASCII 字符串“NTLM”的方法?

【问题讨论】:

    标签: actionscript hex ascii


    【解决方案1】:

    你可以这样试试:

    function HexToASCII(s:String):String {
        var hexChar:String;
        var finalString:String = "";
        for (var i = 0; i < s.length/2; i++) {
            hexChar = s.charAt(i*2).toString()+s.charAt((i*2)+1).toString();
            hexChar = "0x"+hexChar;
            finalString = finalString+String.fromCharCode(parseInt(hexChar));
        }
        return finalString;
    }
    

    【讨论】:

    • 好吧,其实我就是想知道actionscript中是否有方法可以做到。
    【解决方案2】:

    我找到了实现您所要求的“本机方式”:writeInt/writeBytetoString 方法的组合 flash.utils.ByteArray

    import flash.utils.ByteArray;
    
    var hex:String = '0x4e544c4d';
    var hexNum:int = parseInt(hex);
    var bytes:ByteArray = new ByteArray();
    bytes.writeInt(hexNum);
    trace(bytes.toString()); //prints NTLM
    

    当然,您需要注意parseInt 返回的最大值(Number 只能包含 53 位。),以及在写入 ByteArray 时如何匹配。我做了一个小函数来处理更长的十六进制字符串:

    import flash.utils.ByteArray;
    
    var hex:String  = '0x4e544c4d204e544c4d204e544c4d';
    trace(hexToAscii(hex));//NTLM NTLM NTLM
    
    function hexToAscii(hex:String):String {
        if (hex.indexOf('0x') === 0){
            hex = hex.substr(2);
        }
        var bytes:ByteArray = new ByteArray();
        while (hex.length > 1){
            bytes.writeByte( parseInt(hex.substr(0,2), 16) );
            hex = hex.substr(2);
        }
        return bytes.toString();
    }
    

    你可以玩一下:http://wonderfl.net/c/IUn2

    【讨论】:

    • 嗯,好像比较复杂,还是直接写个函数吧。
    • 嗯,当然,你总是可以直接写一个函数。实际上,我还编写了一个名为 hexToAscii 的函数,它从第二个 sn-p 的第 6 行开始,它封装了 ActionScript3 中存在的用于将十六进制数字/字符串转换为 ASCII 字符串的原生、非常低级别的支持。我知道你要求这样的东西。但也许我误解了你。当然,这取决于您的用例的复杂性。当您知道您只有数字范围内的值时,只需使用第一个 sn-ps 之类的东西。无论如何:我仍然认为我对您的问题给出了有效的答案:)
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 2011-01-23
    • 2014-09-05
    • 2021-05-01
    • 2019-09-13
    • 2015-10-30
    • 2012-05-14
    • 2014-08-25
    相关资源
    最近更新 更多