gpt4 book ai didi

numbers - 二进制标志的十六进制组合

转载 作者:行者123 更新时间:2023-12-02 07:53:26 25 4
gpt4 key购买 nike

以下哪项返回 63 一样长(在 Java 中)以及如何返回?

0x0
0x1
0x2
0x4
0x8
0x10
0x20

我正在使用 NetworkManager API 标志(如果有帮助的话)。我从其中一项操作中得到 63,但不知道应该如何将返回值与描述相匹配。

谢谢

最佳答案

63 是 32 | 16 | 16 8 | 4 | 2 | 1,其中 |二元或运算符。

或者换句话说(十六进制):63(即 0x3F)是 0x20 | 0x10 | 0x10 0x8 | 0x8 0x4 | 0x4 0x2 | 0x2 0x1。如果您以二进制形式查看它们,就会很明显:​​

0x20 : 00100000
0x10 : 00010000
0x08 : 00001000
0x04 : 00000100
0x02 : 00000010
0x01 : 00000001

63 是:

0x3F : 00111111
<小时/>

如果您收到一些返回状态并想知道它的含义,则必须使用二进制和。例如:

if (status & 0x02) 
{
}

如果返回状态中标志位0x02(即右起第2位)打开​​,则执行。大多数情况下,这些标志都有名称(描述),因此上面的代码将如下所示:

if (status & CONNECT_ERROR_FLAG)
{
}

同样,状态可以是多种内容的组合:

// Check if both flags are set in the status
if (status & (CONNECT_ERROR_FLAG | WRONG_IP_FLAG))
{
}

P.S.:要了解其原理,this是一篇关于二进制标志及其组合的好文章。

关于numbers - 二进制标志的十六进制组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2032805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com