gpt4 book ai didi

c# - 左移 255(作为一个字节)

转载 作者:可可西里 更新时间:2023-11-01 03:03:24 28 4
gpt4 key购买 nike

谁能解释为什么下面的代码不能编译?

byte b = 255 << 1

错误:

Constant value '510' cannot be converted to a 'byte'

我期待以下二进制文件:

1111 1110

类型转换让我很困惑。

最佳答案

C# 中的数字字面量是 int,而不是 byte(位移将由编译器计算,因此只保留 510)。因此,您试图为不适合的 byte 分配一个值。你可以用 255 掩码:

byte b = (255 << 1) & 0xFF

再次将结果减少到 8 位。与 Java 不同,C# 不允许溢出未被检测到。基本上,在尝试将 510 分配给一个字节时,您有两个明智的选择:要么限制在最大值,然后您将得到 255,要么丢弃不适合的位,在这种情况下您将得到 254。

您也可以使用unchecked,如lassevk mentioned :

byte b = unchecked((byte)(255 << 1));

关于c# - 左移 255(作为一个字节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/737781/

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