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

Bitwise operation between two byte(8 bit hex) getting error in C#

我在第2行和第3行的C代码中出错

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

编译器说:无法将类型"int"隐式转换为"byte"。存在显式转换(是否缺少强制转换?)

但我在C中成功地运行了这段代码,将"data"作为无符号字符。

如何在C中执行此操作?

谢谢你的帮助。


为了防止转换为int,可以改用赋值运算符

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


明确地说,就像:

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

或将日期声明为int,并在结束时转换为字节(如果您确信它符合字节)

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