gpt4 book ai didi

c# - 在 Java 中从 C# 转换标志

转载 作者:行者123 更新时间:2023-12-01 04:23:58 25 4
gpt4 key购买 nike

我正在将部分代码从C#程序翻译为Java,其中定义了一个[Flag]枚举,如下所示:

[Flags]
public enum ClientFlags
{
None = 0x00000000,
Flag1 = 0x00000001,
Flag2 = 0x00000002
...

并在运行时进行掩码操作,例如

ClientFlags.Flag1| ClientFlags.Flag2

在我的java代码中,我复制了相同的类,但没有枚举:

public static byte None             = (byte)0x0;
public static byte Flag1 = (byte)0x01;
public static byte Flag2 = (byte)0x02;

但是当我进行相同的操作时

byte flags = ClientFlags.Flag1 | ClientFlags.Flag2

那么结果就不同了!!我如何在java中复制相同的操作?你能帮我吗?

最佳答案

因为代码无法编译,所以根本不可能有任何结果(包括“不同”的结果)。按位或运算的结果是 int,因此必须将 flags 类型更改为 int 或将结果转换为 byte :


int flags = ClientFlags.Flag1 | ClientFlags.Flag2;


byte flags = (byte)(ClientFlags.Flag1 | ClientFlags.Flag2);

然后您将得到与 C# 相同的结果,即 3

如果您的意思是使用 .NET 您可以将结果输出为“Flag1,Flag2”,那么您可能必须自己实现这一点。

关于c# - 在 Java 中从 C# 转换标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655490/

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