Например, существуют ли какие-либо методы, существующие в ActionScript, которые могут преобразовывать 0x4e544c4d
в строку ASCII «NTLM»?Как преобразовать HEX в ASCII в ActionScript
ответ
Вы можете попробовать так:
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;
}
Я нашел "нативный путь" для того чтобы достигнуть того, что вы просили: сочетание методов writeInt
/writeByte
и toString
из 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
um, кажется, сложно, я бы предпочел написать функцию напрямую. –
um, конечно, вы всегда можете написать функцию напрямую. на самом деле я также написал функцию «hexToAscii», она начинается с строки 6 второго фрагмента и инкапсулирует встроенную поддержку очень низкого уровня, которая существует в ActionScript3 для преобразования шестнадцатеричных чисел/строки в строку ASCII. И я понял, что вы просили что-то вроде этого. Но, может быть, я вас неправильно понял. И couse это зависит от сложности вашего прецедента. когда вы знаете, что у вас есть только значения в диапазоне Number, просто используйте что-то вроде первых фрагментов. Во всяком случае: я все еще думаю, что дал правильный ответ на ваш вопрос :) – karfau
Все правильно, на самом деле я просто хочу знать, если есть способ существует в ActionScript, который может это сделать , –