JS中如何向十六进制转义序列中添加单个Byte字节

你遇到的问题核心是JavaScript的转义序列仅在代码静态解析阶段生效,运行时手动拼接的\x不会被识别为转义前缀,只会作为普通的反斜杠和x字符处理,所以会出现拆成4个独立字符的情况。不需要拼接转义序列,直接通过字节数值生成即可,两种常用实现方案如下:
方案1:使用Uint8Array处理字节流(推荐,适合哈希运算场景)
哈希运算通常直接操作原始字节,用TypedArray可以避免字符串编码带来的额外问题:
// 你分开得到的两位十六进制字符 const hexFirst = '2' const hexSecond = '5' // 转成对应字节的十进制数值 const byte = parseInt(hexFirst + hexSecond, 16) // 拼接原有字节 const originBytes = new Uint8Array([/* 原有字节内容 */]) const resultBytes = new Uint8Array(originBytes.length + 1) resultBytes.set(originBytes, 0) resultBytes[originBytes.length] = byte
后续直接拿resultBytes做哈希运算即可,不需要转成字符串。
方案2:字符串场景直接生成对应字符
如果一定要操作字符串,用String.fromCharCode直接将字节数值转为对应字符:
const hexFirst = '2' const hexSecond = '5' const byte = parseInt(hexFirst + hexSecond, 16) const targetChar = String.fromCharCode(byte) // 拼接后得到的就是单字符%,不会拆成4个字符 const resultStr = originStr + targetChar
内容的提问来源于stack exchange,提问作者Sénéchal Julien
相关产品推荐
相关产品推荐

