【问题标题】:How to check if a hex number is equal to a specific binary number?如何检查十六进制数是否等于特定的二进制数?
【发布时间】:2013-02-10 18:39:27
【问题描述】:

您好,我正在尝试做一些应该很简单的事情,但我想不通。 我有一个指向无符号字符数组的指针,我得到第一个元素,它是一个十六进制数。我想将其转换为二进制,以便检查它是否等于诸如 0x01101000 之类的数字。

      unsigned char arr[] = {0x25};  //just for example. I am actually using *arr.
      unsigned char byte = arr[0];
      if(( byte & 0x01101000) == //not sure if this is the right way to proceed

不胜感激!谢谢!!

【问题讨论】:

  • C 语言没有表达二进制文字的结构。此外,计算机中的所有数字最终都是二进制的,这意味着仅比较任意两个整数实际上是在比较两个二进制数。
  • 0x01101000 是一个十六进制数,你知道吗?二进制表示为1000100000001000000000000
  • 数字都是二进制的,无论你使用哪种文字。如果被误解为二进制,你真的想建立一个十六进制表示会给出 25 的数字吗?
  • 糟糕,我不是在寻找二进制文件。我想我只是想比较2个十六进制数字呢?在这种情况下, if(byte == 0x01101000) 会给我正确的结果吗?
  • 您必须手动进行转换。为此制作一个函数。

标签: c binary hex


【解决方案1】:

请参阅this 答案。

如果您使用的是 GCC,那么您可以为此使用 GCC 扩展:int x = 0b00010000;

所以在你的情况下,它会是:

if( byte == 0b01101000 )
...

请确保在您的文字中只输入 8 位。

【讨论】:

  • 谢谢。我可以使用 == 来检查是否相等吗?
  • @user2057841 修复了它。不同的运营商服务于不同的目的。有关按位运算符的更多详细信息,请参阅stackoverflow.com/a/6092250/762123
  • @user2057841,你最好在你的程序中使用十六进制表示法,它会更便携。 0b 符号仅在使用 GCC 时才有用。
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 2023-02-15
  • 2014-10-30
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 2021-06-06
相关资源
最近更新 更多