You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buffer按位与操作不符合预期:0x81与0x80运算为何不满足条件?

问题原因与解决方案

问题出在你直接对Buffer实例执行按位与操作,而非读取Buffer中存储的单个字节数值。

new Buffer.from(...)返回的是Buffer对象,它是字节数组的包装类。直接将Buffer对象与0x80做按位与运算时,JavaScript会把Buffer对象强制转换为数值(转换结果并非你期望的0x81),导致条件判断失效。

修正后的代码

const text = 'FF8134'

const buff = new Buffer.from(text.substring(2, 4), 'hex')
console.log('buff in string: ' + buff.toString('hex'))

// 取Buffer中第一个字节的数值再执行按位与操作
if ((buff[0] & 0x80) === 0x80) {
  console.log('B2b8 is set')
} else {
  console.log('B2b8 is NOT set')
}

执行结果

buff in string: 81
B2b8 is set

补充说明

  • Buffer是类数组结构,通过下标[index]可直接获取对应位置的字节数值(范围0-255)
  • 若处理多字节Buffer,需根据需求指定对应下标来获取目标字节

内容的提问来源于stack exchange,提问作者kzaiwo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:43:18