【C++】基础:& 0xff 的用法及常用十六进制数处理

【C++】基础:& 0xff 的用法及常用十六进制数处理

在一些情况下,我们会在别人的代码中看到& 0xff,刚开始我也不知道为什么会有这个用法,查了一些资料后,学习如下。

首先,&表示按位与,只有两个位同时为1才能得到1;0x代表16进制数,0xff表示二进制1111 1111,8个位占一个字节。

在这里插入图片描述1. & 0xff的作用——保留低8位例如,有个数字 0x1234,如果只想将低8位写入到内存中,就需要用0x1234 & 0xff。

0x1234 表示成二进制是 0001 0010 0011 0100,0xff 表示成二进制是 1111 1111,高位补0就是 0000 0000 1111 1111。

因为1&0 =0, 1&1 =1,所以0x1234 & 0xff运算后,最低8位不会发生变化。

2. 常用十六进制数的处理在C++中,处理十六进制数可以使用一些内置的功能和方法。

字符串转换为十六进制数:使用 std::stoi 函数将字符串转换为十六进制数。

代码语言:javascript代码运行次数:0运行复制std::string hexString = "1A";

int decimal = std::stoi(hexString, nullptr, 16); // stoi的第三个参数16表示用16进制表示,8进制写8就行十进制数转换为十六进制字符串:使用 std::stringstream 类和 std::hex 输出格式来将十进制数转换为十六进制字符串。

代码语言:javascript代码运行次数:0运行复制int decimal = 26;

std::stringstream ss;

ss << std::hex << decimal; // 输出格式用hex表示,8进制用oct

std::string hexString = ss.str(); // 获取转换后的16进制字符串十六进制数的位操作:使用位运算符(例如按位与、按位或、按位异或)对十六进制数进行位操作。

代码语言:javascript代码运行次数:0运行复制int hexA = 0x0F; // 十六进制数 0x0F

int hexB = 0x32; // 十六进制数 0x32

int resultAnd = hexA & hexB; // 按位与

int resultOr = hexA | hexB; // 按位或

int resultXor = hexA ^ hexB; // 按位异或3. 常用十进制数的处理字符串转换为十进制数:使用 std::stoi 函数将字符串转换为十进制数。

代码语言:javascript代码运行次数:0运行复制std::string decimalString = "42";

int decimal = std::stoi(decimalString);十进制数转换为字符串:使用 std::to_string 函数将十进制数转换为字符串。

代码语言:javascript代码运行次数:0运行复制int decimal = 42;

std::string decimalString = std::to_string(decimal);十进制数的数学运算:常用的数学运算,这里就不多说了。

另外,二进制转十进制,可以使用 std::bitset 类和 std::to_string 函数将十进制数转换为二进制字符串。

代码语言:javascript代码运行次数:0运行复制int decimal = 42;

std::bitset<32> binary(decimal);

std::string binaryString = binary.to_string();以上。

相关推荐