对不起我的英语。我有一些存储在0到255之间的int值。要找出7位数的内容,我将数字转换为二进制系统,然后在行中检查行:
if (informationOctet_.substr(6, 1) == "0")
{
...
}
出现了两个问题,
如果我使用int(我们有4个字节),并且我的数字是无符号的,则范围为[0,255]我如何确定需要考虑哪个字节?高字节?
- 醇>
我找到了所需的字节,你怎么知道第6位的内容?
P.S。 我不使用法术,因为使用unsigned int。
感谢所有,我测试int数字:
int k = 3;
for (int i = 0; i < 8; i++)
{
if (k & (1 << i))
{
std::cout << 1;
}
else
{
std::cout << 0;
}
}
打印: 11000000
答案 0 :(得分:2)
这是实现定义的,取决于CPU的endianess。如果你很聪明,你可以这样检查:the_int & 0xFF
,无论结束性如何,它都会给你最不重要的字节。
byte & (1 << 6)
。也许。请注意,位计数是零索引的(就像数组一样),因此您必须小心使用这些术语。 &#34;比特6&#34;和#34;第6位&#34;可能有不同的含义。始终将位枚举为7 6 5 4 3 2 1 0
,然后它将与C代码一致。
答案 1 :(得分:1)
您可以选择要检查的“字符”数据类型。它回答了你的两个问题。因为,字符数据类型是1字节(8位)。它也包含整数值,因为char&amp; int是兼容的数据类型。