如何在ActionScript中将十六进制转换为ASCII
例如,ActionScript中是否有任何方法可以将如何在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
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;iwriteInt
/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();
}