Cómo convertir de cadena Hex
a ASCII
cadena en JavaScript?Cómo convertir de Hex a ASCII en JavaScript?
Ex:
32343630 será 2460
Cómo convertir de cadena Hex
a ASCII
cadena en JavaScript?Cómo convertir de Hex a ASCII en JavaScript?
Ex:
32343630 será 2460
function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
hex2a('32343630'); // returns '2460'
Por el amor integridad de la función inversa:
function a2hex(str) {
var arr = [];
for (var i = 0, l = str.length; i < l; i ++) {
var hex = Number(str.charCodeAt(i)).toString(16);
arr.push(hex);
}
return arr.join('');
}
a2hex('2460'); //returns 32343630
Una nota sobre esta implementación: debe insertar manualmente un "0" cuando el valor 'hex 'está entre 0x0 y 0x9. Para esto, cambio su 'arr.push (hex)' a 'arr.push (hex.length> 1 && hex ||" 0 "+ hex);'. – Beterraba
La concatenación de cadenas es en realidad más rápida que la construcción de cadenas de matrices y se une en javascript – Mala
Tiene un error tipográfico, se olvidó de poner el paréntesis de cierre después de 'toString (16)' (línea no.4). ;-) – Arjun
Se puede usar esta ..
var asciiVal = "32343630".match(/.{1,2}/g).map(function(v){
return String.fromCharCode(parseInt(v, 16));
}).join('');
document.write(asciiVal);
Otra manera de hacerlo (si utiliza Node.js):
var input = '32343630';
var output = new Buffer(input, 'hex');
log(input + " -> " + output); // Result: 32343630 -> 2460
he encontrado que la solución anterior no funcionará si usted tiene que tratar con caracteres de control como 02 (STX) o 03 (ETX), cualquier cosa menor de 10 se leerá como un solo dígito y arrojará todo después. Me encontré con este problema tratando de analizar a través de comunicaciones en serie. Por lo tanto, lo primero que tomó la cadena hexadecimal recibido y lo puso en un objeto de memoria intermedia convierte entonces la cadena hexadecimal en una matriz de las cadenas al igual que
buf = Buffer.from(data, 'hex');
l = Buffer.byteLength(buf,'hex');
for (i=0; i<l; i++){
char = buf.toString('hex', i, i+1);
msgArray.push(char);
Entonces .join que
message = msgArray.join('');
entonces creé una función hexToAscii al igual que en @Del La respuesta de un Azabani arriba ...
function hexToAscii(str){
hexString = str;
strOut = '';
for (x = 0; x < hexString.length; x += 2) {
strOut += String.fromCharCode(parseInt(hexString.substr(x, 2), 16));
}
return strOut;
}
continuación, llama a la función hexToAscii el 'mensaje'
message = hexToAscii(message);
Este enfoque también permitió que iterar a través de la matriz y cortar en las diferentes partes de la transmisión usando los caracteres de control para poder tratar solo con la parte de los datos que quería. ¡Espero que esto ayude a alguien más!
Encontré una función útil presente en la biblioteca web3.
var hexString = "0x1231ac"
string strValue = web3.toAscii(hexString)
Estoy seguro de que hay un plugin de jQuery para que ^^ – AndiDog
jQuery se entiende principalmente para la manipulación DOM y, en menor medida, reimplementar cosas como 'Array.prototype. {Mapa, forEach}()' para anticuados/navegadores limitados. Honestamente, esto se parece más al reino de [Underscore.js] (http://underscorejs.org/). –
@AndiDog No es útil para aquellos de nosotros que usamos el nodo –