请教类似parseInt('Oxa') = 10怎么求逆运算?进制转换和unicode有点晕!
来源: 将一串字母和数字的字符串转成纯字母型的十六进制串: const encrpytStr=‘1j3kds98sd’; let res=’’; for (var i = 0; i < encrpytStr.length; i++) {
res += String.fromCharCode(parseInt('0x' + encrpytStr[i]) + 97);转成纯字母
}
问题: 已知res十六进制串,如题目parseInt(‘Ox’+?) = B,已知B的数值,怎么求?的原始值? 这个 有点绕晕了,请教大家有啥好办法解答下?
3 回复
两个方法你弄清楚就好,注意第二个number.toString是Number的实例方法,而不是Object的
//Number.parseInt(str, radix) 参数radix含义是,传入第一个参数是几进制。返回值是十进制数
parseInt('100',2) //4
parseInt('100',10) //100
//number.toString(radix) 参数radix是你要把这个数字转化成几进制
0xa.toString(2) // "1010"
0xa.toString(10) // "10"
//如果是node直接用Buffer就好
function string2hex(str) {
//return Buffer.from(str, 'utf8').toString('hex')
const ret = []
for(let i = 0, len = str.length; i < len; i++){
ret.push(str.charCodeAt(i).toString(16))
}
return ret.join('')
}
function hex2string(hexStr) {
//return Buffer.from(hexStr, 'hex').toString('utf8')
const ret = []
const STEP = 2 //char range in [0-9a-zA-Z]
for(let i = 0, len = hexStr.length; i < len; i += STEP){
ret.push(String.fromCharCode(Number.parseInt(hexStr.slice(i, i+STEP), 16)))
}
return ret.join('')
}
const str = '1j3kds98sd'
require('assert')(hex2string(string2hex(str)) == str)
数字相关自然想到用Number的方法,String往Number转,用Number的静态方法parseInt;Number往String转,用Number的实例方法 两个方法中radix,一个是对源输入格式的描述,另一个是对目标输出格式的描述
@soda-wy 谢谢哈!通过参考您的说明,(‘l’.charCodeAt(0)-97).toString(16)='b’就是求逆的过程
@jiangliqin :)