位移期间的编译错误"无法隐式转换类型' int'到'字节' "

时间:2016-04-06 06:22:47

标签: c#

我得到以下错误。我试过所有类型的类型转换但没有帮助。请让我知道这里发生了什么。

Error: Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)

byte[] bitVector = new byte[UInt32.MaxValue/8];

//bitVector[((UInt32)x/8)]  |=  (1 << ((int)(x % 8))); ERROR 
//bitVector[((UInt32)x / 8)] |= (1 << Convert.ToByte(x % 8)); ERROR
bitVector[((UInt32)x/8)]  |=  (1 << 5); //No Error

2 个答案:

答案 0 :(得分:1)

以下应提供帮助

bitVector[((UInt32)x/8)]  |=  (byte)(1 << x % 8)

bit操作的结果为integer,您尝试将其填入byte类型,因此需要明确的类型转换

答案 1 :(得分:0)

你需要使用这个

bitVector [((UInt32)x / 8)] | =((byte)1&lt;&lt;(1%8));

这两个给你带来麻烦的是这样做的,因为你试图将一个int(字节移位的结果)分配给一个字节数组,通过强制你转移到一个你将得到预期的字节的常量结果