【问题标题】:Find hex number inside Hex Range in C+/C++在 C++/C++ 中查找十六进制范围内的十六进制数
【发布时间】:2013-09-27 21:13:53
【问题描述】:

如图所示,我在十六进制范围内有最小值和最大值,我喜欢搜索/检查这个十六进制数 0D08 是否属于下面的十六进制范围。 提前致谢。

安德鲁 我应该在数组中做吗? {"0000","0001",......"03FF"},但是太多了。

0000H - 03FFH

【问题讨论】:

  • 将十六进制转换为int 并比较int 的值。
  • 为什么不将最小值、最大值和数字转换为小数,然后简单地做if ( number >= min && number <= max )
  • 您如何知道十六进制值?作为字符串,作为数字?它们只是数字——因此适用数学的常规规则。毕竟十六进制只是一组二进制数字,这实际上是计算机内部表示数字的方式。您在发布问题之前是否考虑过这一点?
  • 0x03FF 是十进制的 1023,具有 1024 个条目的数组仅用于比较范围是非常低效的。将其转换为int 然后简单地比较...
  • 弗洛里斯:不,但我不希望简单的比较能奏效,结果每个人都有相同的答案。我以为你问过关于十六进制数的问题?感谢您的 cmets。

标签: c++ hex


【解决方案1】:

简单地做普通比较:-

x=0xd08;

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

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

}

【讨论】:

  • 这是一个很好的简洁的方式来展示如何做到这一点。得到我的投票。
  • 你可以这样做,我认为这太简单了:--)。谢谢。
【解决方案2】:

只需使用比较运算符。您会发现知道十六进制数可以使用符号0xHHHH 在 C++ 中直接表示很有用,其中H 的范围自然是从0F

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

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

【讨论】:

【解决方案3】:

最好的方法是先将hex 转换为int,然后进行比较。

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 2011-06-01
  • 2011-12-09
  • 1970-01-01
  • 2023-02-15
  • 2015-02-14
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
相关资源
最近更新 更多