This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Z-Stack 3.0 中的十六进制值

Guru**** 2540720 points
Other Parts Discussed in Thread: Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/580253/hexadecimal-in-z-stack-3-0

主题中讨论的其他部件:Z-stack

您好,

我只是想知道为什么在Z-Stack 3.0 中使用十六进制,例如"#define UI_key_Auto_Pressed 0xff"行,它在十进制中等同于6.5535万。 除了简单性(如键入)之外,是否还有其他原因导致在小数点后使用HEX? 同样在Z-Stack 3.0 中,为什么需要在上面的行中使用如此高的值,而不是像100 (十进制)这样低的值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jack,您好!

    使用此类十六进制并不是Z-Stack所独有的,它是使用嵌入式平台时的常见编码实践。 我们在许多堆栈中做类似的事情。 除其他外,使用十六进制数过十进制数特别适用于以下两种情况:

    1.将二进制数据冷凝为十六进制,例如:
    0x (F)(0)(A)(1)= 0b (1111)(0000)(1010)(0001)

    2.执行按位操作,通常在嵌入式系统上执行,例如:
    0x1 | 0x2 | 0x4 = 0b0001 | 0b0010 | 0b0100 = 0b0111 = 0x7

    至于为什么将此特定变量定义为0xFFFF,它用于变量CURRENT_KEYS是表示密钥当前状态的uint16的上下文中。 此uint16的下部字节是按下键的位掩码,上部字节是释放键的位掩码。 在某些情况下,键被按住,我们希望在此情况下将唯一数据传递到此函数,由于此函数需要uint16,因此我们决定传递此值。 它可以很容易地成为一个不同的uint16值,它不会与任何一个“按键”位掩码冲突,但使用0xFFFF不会占用比使用0xFEFD更多的空间。