如果我有以下字符串:
stsTokenManager
我做了以下事情:
std::string mcc_mnc = "272005"
字节1 typedef unsigned char byte;
byte ecgi[3];
//byte 1
ecgi[0] = byte(mcc_mnc[0] - '0');
ecgi[0] = ecgi[0] | byte((mcc_mnc[1] - '0') << 4);
//byte 2
ecgi[1] = byte(mcc_mnc[2] - '0');
ecgi[1] = ecgi[1] | byte((mcc_mnc[5] - '0') << 4);
//byte 3
ecgi[2] = byte(mcc_mnc[3] - '0');
ecgi[2] = ecgi[2] | byte((mcc_mnc[4] - '0') << 4);
现在应该包含:
ecgi[0]
字节2 01110010 (0x72)
现在应该包含:
ecgi[1]
字节3 01010010 (0x52)
现在应该包含:
ecgi[2]
我想改变上面的内容,以便Byte 3 00000000 (0x00)
看起来像这样:
ecgi[2]
答案 0 :(得分:3)
只需将低半字节设置为全1即可:
ecgi[2] |= 0xf;
或者在一些支持二进制文字的(现代)编译器中:
ecgi[2] |= 0b1111;
执行按位OR运算,有效地设置右侧的所有位。