Laut MSDN ein Short
Datentyp besteht aus zwei Bytes: https://msdn.microsoft.com/en-us/library/47zceaw7.aspxWarum kommt die Short mit 4 Bytes in VB.net
Aber wenn ich eine Short
Variable zu definieren, der Inhalt ist immer 4 Bytes: & HFFFFFFFF
Dim crc As Short = CShort(&HFFFFS) ' crc = &HFFFFFFFF
Dim crc As Short = &HFFFFS ' crc = &HFFFFFFFF
Und diese Aussage gibt mir noch einen Fehler:
Dim crc As Short = CShort(&HFFFF) ' Error: Constant expression not representable in type 'Short'
Was mit diesem ist der Deal? Warum nimmt meine Short
nicht zwei Bytes?
MWE hinzugefügt:
Public Function CRC16(ByVal dataFrame As Byte(), ByVal dataLength As Int16) As Int16
Dim index As Int16
Dim crc As Short = &HFFFFS
For iCount As Int16 = 0 To CShort(dataLength - 1)
index = (crc >> 8) Xor dataFrame(iCount)
crc = CShort(&HFFFF And ((crc << 8) Xor CRC_Table(index)))
Next
Return crc
End Function
Ihre Fehlermeldung überrascht mich nicht zu sehen, wie ein * signed * 'Short' kann nur bis zu 32.767 halten - so '& HFFFF' ist zu groß. Können Sie einen ausführbaren Code anzeigen, der Ihr Problem anzeigt? Woher weißt du, dass der Inhalt an diesem Punkt 4 Bytes ist? –
@Farhan Danke, das war mein Denkfehler, meine Absicht ist es, alle Bits auf 1 zu setzen und den Wert von & HFFFF nicht zu überschreiten, wie kann ich das machen? – bitlischieber
@Macro Die "Mouse over Variable" -Funktion und Watch-Fenster in VS zeigte mir den Wert. – bitlischieber