Secondo MSDN un tipo di dati Short
è costituito da due byte: https://msdn.microsoft.com/en-us/library/47zceaw7.aspxPerché il mio corto contenente 4 byte in VB.net
Ma se io definisco una variabile Short
, il contenuto è sempre 4 byte: & HFFFFFFFF
Dim crc As Short = CShort(&HFFFFS) ' crc = &HFFFFFFFF
Dim crc As Short = &HFFFFS ' crc = &HFFFFFFFF
E questa affermazione anche mi dà un errore:
Dim crc As Short = CShort(&HFFFF) ' Error: Constant expression not representable in type 'Short'
Qual è il problema con questo? Perché il mio Short
non richiede due byte?
MWE aggiunto:
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
La tua dichiarazione di errore non mi sorprende visto che un * firmato * 'Short' può contenere solo fino a 32.767 - quindi' & HFFFF' è troppo grande. Puoi mostrare un codice eseguibile che mostra il tuo problema? Come sai che il contenuto a questo punto è di 4 byte? –
@Farhan Grazie, questo è stato il mio errore nel ragionamento, la mia intenzione è quella di impostare tutti i bit su 1 e non passare il valore di & HFFFF come posso fare questo? – bitlischieber
@Macro La funzione "Mouse over variable" e la finestra Watch in VS mi hanno mostrato il valore. – bitlischieber