如果我有以下字符串:
std::string mcc_mnc = "272005"我做了以下事情:
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);字节1 ecgi[0]现在应该包含:
01110010 (0x72)字节2 ecgi[1]现在应该包含:
01010010 (0x52)字节3 ecgi[2]现在应该包含:
00000000 (0x00)我想要更改上面的设置,使字节3 ecgi[2]看起来像这样:
00001111 (0x0F)发布于 2018-05-31 19:08:29
只需将较低的半字节设置为全1:
ecgi[2] |= 0xf;或者在一些支持二进制文字的(现代)编译器中:
ecgi[2] |= 0b1111;这将执行逐位OR操作,有效地设置右侧的所有位。
https://stackoverflow.com/questions/50622116
复制相似问题