如何在ActionScript中将十六进制转换为ASCII

如何在ActionScript中将十六进制转换为ASCII,actionscript,hex,ascii,Actionscript,Hex,Ascii,例如,ActionScript中是否有任何方法可以将0x4e544c4d转换为ASCII字符串“NTLM”您可以这样尝试: 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.c

例如,ActionScript中是否有任何方法可以将
0x4e544c4d
转换为ASCII字符串“NTLM”

您可以这样尝试:

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;
}
函数HexToASCII(s:String):String{ var-hexChar:String; var finalString:String=“”; 对于(变量i=0;i我找到了一种实现您要求的“原生方式”:一种方法的组合
writeInt
/
writeByte
toString

当然,您需要注意返回的最大值(
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();
}

你可以玩它:

好吧,事实上我只是想知道actionscript中是否有一种方法可以做到这一点。嗯,这似乎很复杂,我更喜欢直接编写函数。嗯,当然,你总是可以直接编写函数。实际上,我还编写了一个名为
hexToAscii
的函数,它从第二个代码段的第6行开始,它封装了ActionScript3中存在的本机、非常低级的支持,用于将十六进制数/字符串转换为ASCII字符串。我知道你想要这样的东西。但也许我误解了你。当然,这取决于用例的复杂性。当您知道您只有数字范围内的值时,只需使用类似于第一个代码段的内容。无论如何:我仍然认为我对你的问题给出了一个有效的答案:)
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();
}