JavaScript 에서 Hex
문자열을 ASCII
문자열 로 변환하는 방법은 무엇입니까?
전의:
32343630 2460이됩니다.
답변
function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
hex2a('32343630'); // returns '2460'
답변
완전성을 위해 역 기능 :
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
답변
다른 방법 (Node.js를 사용하는 경우) :
var input = '32343630';
const output = Buffer.from(input, 'hex');
log(input + " -> " + output); // Result: 32343630 -> 2460
답변
이것을 사용할 수 있습니다 ..
var asciiVal = "32343630".match(/.{1,2}/g).map(function(v){
return String.fromCharCode(parseInt(v, 16));
}).join('');
document.write(asciiVal);
답변
web3 라이브러리 에 유용한 기능이 있습니다.
var hexString = "0x1231ac"
string strValue = web3.toAscii(hexString)
답변
** Hexa to String **
let input = '32343630';
참고 : let output = new Buffer (input, ‘hex’); // 더 이상 사용되지 않습니다.
let buf = Buffer.from(input, "hex");
let data = buf.toString("utf8");
답변
02
(STX) 또는 03
(ETX) 와 같은 제어 문자를 처리해야하는 경우 위의 솔루션이 작동하지 않는다는 것을 발견했습니다. 그 아래의 10
모든 것은 한 자리 숫자로 읽히고 이후 모든 것을 버립니다. 직렬 통신을 통해 구문 분석하려고이 문제가 발생했습니다. 그래서 먼저받은 16 진수 문자열을 버퍼 객체에 넣은 다음 16 진수 문자열을 다음과 같이 문자열 배열로 변환했습니다.
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);
}
그런 다음 .join it
message = msgArray.join('');
그런 다음 위 의 @Delan Azabani의 답변 hexToAscii
과 같은 기능을 만들었습니다 …
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;
}
그런 다음 hexToAscii
‘메시지’에 대한 함수 를 호출했습니다.
message = hexToAscii(message);
이 접근 방식을 사용하면 배열을 반복하고 제어 문자를 사용하여 전송의 다른 부분으로 분할 할 수 있으므로 원하는 데이터의 일부만 처리 할 수 있습니다. 이것이 다른 사람에게 도움이되기를 바랍니다!