【问题标题】:Is there a convenient way of writing simple but long hex values in c?有没有一种方便的方法可以在 c 中编写简单但长的十六进制值?
【发布时间】:2014-02-18 15:14:42
【问题描述】:

我目前正在编写一个代码,我需要一次修改一个 8 字节变量 1 位。我想知道,是否有更方便的方法来编写一个长而简单的十六进制值,例如:

变量 & 0x8000000000000000

我知道我可以将 char 声明为 0x80,然后将其转换为不同的类型并对其进行转换。我只是在寻找更简单、更实用的东西。

【问题讨论】:

    标签: c hex


    【解决方案1】:

    您可以使用按位左移运算符使其更清晰:

    variable & 1ULL << 63
    

    【讨论】:

    • 该死的。当然!这次真是万分感谢。我不知道我是怎么错过的。
    【解决方案2】:

    好吧,虽然是换班,但是你可以使用arduino的BV()宏,简洁方便:

    #define _BV(bit) (1ULL << (bit))
    

    就是这样使用的:

    var & (0x8 * _BV(60));
    

    如果您想处理最左边的字节或直接处理:

    var & _BV(63);
    

    访问第 63 位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2014-01-22
      • 2012-04-17
      相关资源
      最近更新 更多