我正在使用我的Raspberry Pi 3及其GPIO引脚。我很遗憾地使用了一个PDF文件,这个文件在Arduino中编码。我已经尝试查找从Arduino到C#的转换,但只能找到从Arduino到本机C的转换。我从中得到了这个代码,它正在编译错误,我想知道原因。我查看了Stack Overflow并且无法在任何地方找到它,所以我自己问了一下。 (我已将部分代码转换为我在c#中使用的代码,如顶行。其余的我没有碰过。
void ShiftOut(GpioPin dataPin, GpioPin clockPin, bool MSBFIRST, byte command)
{
for (int i = 0; i < 8; i++)
{
bool output = false;
if (MSBFIRST)
{
output = command & 0b10000000;
command = command << 1;
}
else
{
output = command & 0b00000001;
command = command >> 1;
}
}
}
答案 0 :(得分:1)
在C#中,bool
和int
之间没有隐式转换。在这一行:
output = command & 0b10000000;
command
是byte
0b10000000
是int
command & 0b1000000
会返回int
。output
是bool
。没有从int
到bool
的隐式(或显式)转换,因此分配失败。这里的问题是为什么output
被声明为bool
?