簡體   English   中英

不帶編碼的十六進制字符串

[英]String from hex without encoding

我有一個包含十六進制值的字符串,如:“1BB3AE3E”。

現在我想把它轉換成一個字符串(預期結果“≥Æ>”)的字節表示(因此寫入文件,並用十六進制查看器打開將顯示“1BB3AE3E”)

這就像Ruby一樣

['1BB3AE3E'].pack('H*')

我嘗試過創建Buffer.toString,String.fromCharCode,但它沒有按照我的預期工作。 我得到的結果是關閉的

var input = "1BB3AE3E"
var buffer = new Buffer(input, "hex")
var result = buffer.toString("binary")

它產生一個包含“³>”的文件,其中十六進制為:1B C2 B3 C2 AE 3E。 那些C2來自哪里? 我怎樣才能使它工作?

我也試過了

var hexes = this.match(/.{1,2}/g) || [];
var back = "";
for(j = 0; j< hexes.length; j++) {
    back += String.fromCharCode(parseInt(hexes[j], 16));
}

但沒有白費。 效果如上。

//var result= parseInt(buffer, 16).toString(2)
  var result= parseInt(input, 16).toString(2)

Output:"11011101100111010111000111110"

另見: https//gist.github.com/faisalman/4213592

為了做一個好的代碼你應該是hexDecode和原型以及fromCharCode和parseInt,你可以做的例子:

String.prototype.hexDecode = function(){
    var j;
    var hexes = this.match(/.{1,4}/g) || [];
    var back = "";
    for(j = 0; j<hexes.length; j++) {
        back += String.fromCharCode(parseInt(hexes[j], 16));
    }

    return back;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM