110,538
社区成员
发帖
与我相关
我的任务
分享
(((short)(-(buffer[0] == 0x80 ? -1 : 0) > -1 ? -1 : 0) | (buffer[0] & 0)) > 0)
ElseIf ((CShort(-((buffer(0) = &H80) > False)) Or (buffer(0) And 0)) > 0) Then
------------------------------------------------------------------------------
else if 这个不说了
CShort(...) -> (short)(...)
buffer(0) -> buffer[0]
&H80 -> 0x80
(buffer(0) = &H80) -> buffer[0] == 0x80
> Flase -> vb.net中 True:0 False:-1 所以对应c# : >-1
(buffer(0) = &H80) > False -> (buffer[0] == 0x80 ? 0 : -1) > -1
因为前面还有一个-,表示这里面的不能返回boolean,需要再次转换为数字,则
-((buffer(0) = &H80) > False) -> -(((buffer[0] == 0x80 ? 0 : -1) > -1)?0:-1)
0>-1 为True,对应数字 0 , -1>-1为False,对应数字为 -1,则这个判断无意义
以上的可以简化为:-(buffer[0] == 0x80 ? 0 : -1)
CShort(-((buffer(0) = &H80) > False)) -> (short)(-(buffer[0] == 0x80 ? 0 : -1))
buffer(0) And 0 -> buffer[0] & 0
vb.net中的or既可以表示逻辑关系或,也可以表示位运算,这里前面是数字,所以后面的也被识别为数字,Or表示位运算
结果就是
else if (((short)(-(buffer[0] == 0x80 ? 0 : -1)))|(buffer[0] & 0)>0)
((((short)-(buffer[0] == 0x80 ? 0 : -1)==0 ||( (buffer[0] & 0) == 0))?0:-1) > 0)
else if((-((short) -(((buffer[0] == 0x80) < false) > false)) | (buffer[0] & 0)) > 0)