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

C++按指定顺序拼接两个long long字节的实现方法咨询

解决两个字节的位拼接问题

嘿,刚接触位操作的新手朋友别担心,这个拼接问题其实很容易搞定!咱们一步步来拆解你的需求:

你需要把bytes2(二进制10000000)放在高位区域,bytes1(二进制11111111)放在低位区域,最终得到1000000011111111的结果。核心思路就是把高位字节左移到对应位置,再和低位字节做按位或操作。

具体实现步骤

  • 左移高位字节:把bytes2左移8位,这样它就从原来的低8位位置跳到了高8位的位置,低8位自动补0。比如0b10000000 << 8会变成0b1000000000000000(十六进制的0x8000)。
  • 按位或合并:把左移后的bytes2和bytes1做按位或(|)操作。因为左移后的bytes2低8位都是0,按位或会保留bytes1的所有1位,刚好拼接成你要的目标结果。

完整代码示例(C++)

#include <iostream>
using namespace std;

int main() {
    // 用二进制字面量或十六进制均可,十六进制对旧编译器兼容性更好
    long long bytes1 = 0b11111111; // 等价于 0xFF
    long long bytes2 = 0b10000000; // 等价于 0x80
    
    // 核心拼接操作
    long long result = (bytes2 << 8) | bytes1;
    
    // 验证结果:输出十六进制的80ff,对应目标二进制值
    cout << "十六进制结果:" << hex << result << endl;
    return 0;
}

额外注意事项

  • 如果你的编译器不支持0b开头的二进制字面量,直接替换成十六进制值0xFF和0x80即可,效果完全一致。
  • 因为long long是64位类型,左移8位远不会触发溢出问题,不用担心数据丢失。
  • 若bytes1或bytes2意外包含超过8位的数值,记得先做掩码操作(比如bytes1 & 0xFF),确保只保留低8位,避免干扰拼接结果。

内容的提问来源于stack exchange,提问作者Elly John Mirasol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:05:27