JavaScript에서 Hex를 ASCII로 변환하는 방법은 무엇입니까?
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';
var output = new Buffer(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)
위의 솔루션은 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);
이 접근 방식을 사용하면 배열을 반복하고 제어 문자를 사용하여 전송의 다른 부분으로 분할 할 수 있으므로 원하는 데이터의 일부만 처리 할 수 있습니다. 이것이 다른 사람에게 도움이되기를 바랍니다!
@michieljoris가 제안한 역 함수 구현의 최적화 된 버전 (@Beterraba 및 @Mala의 의견에 따름) :
function a2hex(str) {
var hex = '';
for (var i = 0, l = str.length; i < l; i++) {
var hexx = Number(str.charCodeAt(i)).toString(16);
hex += (hexx.length > 1 && hexx || '0' + hexx);
}
return hex;
}
alert(a2hex('2460')); // display 32343630
console.log(
"68656c6c6f20776f726c6421".match(/.{1,2}/g).reduce((acc,char)=>acc+String.fromCharCode(parseInt(char, 16)),"")
)
참고 URL : https://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript
'Development Tip' 카테고리의 다른 글
응용 프로그램 디렉토리 가져 오기 (0) | 2020.10.22 |
---|---|
소켓 파일을 열 수없는 jmap 실행 (0) | 2020.10.22 |
NEWER Flexbox API를 사용하는 전체 높이 앱의 Flexbox 및 수직 스크롤 (0) | 2020.10.22 |
'homestead ssh'를 처음 사용할 때 vagrant에 연결하기위한 기본 비밀번호가 있습니까? (0) | 2020.10.22 |
ABAP와 SAP는 무엇입니까? (0) | 2020.10.22 |