2017-05-14 45 views
1

大约一周前,我发现了一个非常好的从文本到十六进制的转换器。试图将textarea转换为nodejs中的十六进制

但是,我没有用换行符测试文本。突然我的NodeJS应用程序返回此: FUF

代替:

˚F

˚F

十六进制,根据string-functions.com应该660d0a0d0a66但我的应用程序返回66da66

这里我的“toHex”和“toText”代码。这种转换并不是我最重要的一点。

var toHex = function toHex (str) { 
    var hex = '' 
    for (var i = 0; i < str.length; i++) { 
    hex += '' + str.charCodeAt(i).toString(16) 
    } 
    return hex 
} 

var toText = function (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 
} 

编辑: 当我插入660d0a0d0a66直接进入我的转换器将其转换为:FF,所以有问题出现,以及....

+0

我有点困惑在这里...你为什么不只是做一个简单的'parseInt函数(STR)的ToString(16)'代替写整个toHex函数? – kennasoft

+0

,因为当我尝试使用parseInt(str).toString(16)它返回NaN(不是数字) – Rachelle

回答

0

那么,你的问题是标签的NodeJS,所以我猜你可以使用本地的Buffer对象: new Buffer(hexString, 'hex') - >给你一个十六进制字符串的缓冲区对象。 new Buffer(string, 'utf-8') - >给你一个字符串的缓冲区对象。 yourBuffer.toString('hex') - >给你一个十六进制字符串
...等等

+0

谢谢,经过一些试验和错误,我设法让它工作。尽管我现在遇到了其他问题。 但这解决了转换问题:) – Rachelle