C#中两个字节(8位十六进制)之间的按位运算获取错误

时间:2016-08-18 19:44:51

标签: c# hex byte bitwise-operators

我在第二个和第二个C#代码中遇到错误第3行

byte Data = 0x00;
Data = Data | 0x80;
Data = Data >> 1;

编译器说:不能隐式转换类型' int'到'字节'。存在显式转换(您是否错过了演员?)

但是我成功地在C中运行了这个代码" Data"作为unsigned char。

如何在C#中做到这一点?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

为防止转换为int,您可以使用赋值运算符

byte Data = 0x00;
Data |= 0x80;
Data >>= 1; // result is 0x40

答案 1 :(得分:1)

明确表达:

byte Data = 0x00;
Data = (byte)(Data | 0x80);
Data = (byte)(Data >> 1);

或将日期声明为int并在结尾处转换为byte(如果您确定它适合字节)

int Data = 0x00;
Data = Data | 0x80;
Data = Data >> 1;
byte bData = (byte)Data;