2013-09-27 120 views
1

如图所示,我有十六进制范围内的最小值和最大值,并且我喜欢搜索/检查此十六进制数字0D08是否属于下面的十六进制范围。 在此先感谢。在C +/C++中查找十六进制范围内的十六进制数字

安德鲁 我应该在数组中做? {“0000”,“0001”,......“03FF”},但会太多。

0000H - 03FFH 
+3

将十六进制转换为“int”并比较“int”值。 –

+0

为什么不将min,max和number转换为小数,只需要'if(number> = min && number <= max)'? – Grzegorz

+0

你知道十六进制数值是怎么样的?作为字符串,数字?他们只是数字 - 所以数学的规则适用。毕竟十六进制只是一个二进制数字的分组,而实际上计算机是如何在内部表示数字的。您在发布您的问题之前是否考虑过这个问题? – Floris

回答

1

最好的办法是先转换hexint,然后进行比较。

+2

感谢您的回答。 – AndrewS

+1

不客气!!! 1 –

2

简单地做正常对比: -

x=0xd08; 

min = 0x0; // decimal 0 
max = 0x3ff; // decimal 1023 

if (x>=min && x <= max){ 
//Do Stuff 

} 
+0

这是一个很好的简洁的方式来展示如何做到这一点。获得我的投票。 – Floris

+0

你可以这么做,我认为这太简单了: - )。谢谢。 – AndrewS

1

只需使用比较操作符。您会发现识别十六进制数字可能会直接用C++使用符号0xHHHH表示,其中H的范围自然为0F

bool check_range(int x) 
{ 
    return x > 0x0000 && x < 0x03FF; 
} 

if(check_range(0x0D08)) 
    //do stuff 
+0

谢谢Brunocodutra。我应该接受哪一个?两个答案看起来不错。 – AndrewS

+0

@AndrewS [底线是你应该接受你发现对你个人最有帮助的答案。](http://meta.stackexchange.com/questions/5234/how-does-accepting-an -answer工作/ 5235#5235) – brunocodutra