Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

286
Views
Javascript hexadecimal a ASCII con símbolos latinos extendidos

Obtengo un valor hexadecimal de mi cadena que se ve así:

 String has letters with diacritics: č,š,ř, ...

El valor hexadecimal de esta cadena es:

 0053007400720069006E006700200068006100730020006C0065007400740065007200730020007700690074006800200064006900610063007200690074006900630073003A0020010D002C00200161002C00200159002C0020002E002E002E

El problema es que cuando trato de volver a convertir este valor a ascii, convierte mal el č, š, ř, .. y devuelve el símbolo de una pequeña caja con un signo de interrogación en lugar de estos símbolos.

Mi código para convertir hexadecimal a ascii:

 function convertHexadecimal(hexx){ let index = hexx.indexOf("~"); let strInfo = hexx.substring(0, index+1); let strMessage = hexx.substring(index+1); var hex = strMessage.toString(); var str = ''; for (var i = 0; i < hex.length; i += 2){ str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); } console.log("Zpráva: " + str); var strFinal = strInfo + str; return strFinal; }

puede alguien ayudarme con esto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Primero una solución de ejemplo:

 let demoHex = `0053007400720069006E006700200068006100730020006C0065007400740065007200730020007700690074006800200064006900610063007200690074006900630073003A0020010D002C00200161002C00200159002C0020002E002E002E`; function hexToString(hex) { let str=""; for( var i = 0; i < hex.length; i +=4) { str += String.fromCharCode( Number("0x" + hex.substr(i,4))); } return str; } console.log("Decoded string: %s", hexToString(demoHex) );

Qué está haciendo:

Trata los caracteres hexadecimales como una secuencia de 4 dígitos hexadecimales que proporcionan el código de carácter UTF-16 de un carácter.

  • Obtiene cada conjunto de 4 dígitos en un bucle usando String.prototype.substr . Tenga en cuenta que MDN dice que .substr está en desuso, pero esto no se menciona en el estándar ECMASript: reescríbalo para usar substring o cualquier otra cosa que desee.

  • Los caracteres hexadecimales tienen el prefijo "0x" para convertirlos en una representación numérica válida en JavaScript y convertirlos en un objeto numérico mediante Number . Luego, el número se convierte en una cadena de caracteres mediante el método estático String.fromCharCode .

Supuse el formato de la cadena hexadecimal mirándola, lo que significa que una rutina de codificación de propósito general para codificar caracteres UTF16 (no puntos de código) en hexadecimal podría verse así:

 const hexEncodeUTF16 = str=>str.split('') .map( char => char.charCodeAt(0).toString(16).padStart(4,'0')) .join(''); console.log( hexEncodeUTF16( "String has letters with diacritics: č, š, ř, ..."));

Espero que estos ejemplos muestren lo que se necesita hacer: hay varias formas de implementarlo en el código.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!