gpt4 book ai didi

c# - 使用左移将两个字节合并为 short

转载 作者:太空狗 更新时间:2023-10-29 18:06:37 25 4
gpt4 key购买 nike

我有一个高字节和一个低字节,我想将其转换为短字节。

我已经实现了这个,这似乎有效,但我对为什么有点困惑。两者 high_bytelow_byte被转换为 byte秒。

short word = (short)(high_byte << 8 | low_byte);

在此代码中,应该 high_byte << 8为零?然后我试了这个:

(byte)1 << 8

等于256 ,我认为应该是 0 .我想我显然遗漏了一些东西。

谁能解释一下?

最佳答案

来自C# language specification , 第 4.1.5 节:

The integral-type unary and binary operators always operate with signed 32-bit precision, unsigned 32-bit precision, signed 64-bit precision, or unsigned 64-bit precision:

...

For the binary << and >> operators, the left operand is converted to type T, where T is the first of int, uint, long, and ulong that can fully represent all possible values of the operand. The operation is then performed using the precision of type T, and the type of the result is T.

也就是说,无论何时将任何运算符应用于 C# 中的整数类型,结果始终至少为 32 位。对于其他运算符还有其他规则(在 ... 中给出),它们准确定义了最终类型的确定方式。


(顺便说一句,我认为这很重要,可以在 C# Reference 中提及,但如果我能在任何地方找到它,我会很震惊)

关于c# - 使用左移将两个字节合并为 short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654634/

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