infostabil > edb.programmering.* > edb.programmering.general

per Juul Larsen (14.05.2016, 10:32)
når jeg skriver til en binay fil som sådan
Open "Z:\test" For Binary As #9
Put #9, , VersionNumber

For i = 0 To List5.ListCount

If i <> 0 Then Put #9, , "ÿ"
If Len(List5) < 4 Then
Put #9, , CByte(Left(List5.List(i), 2))
Put #9, , CByte(Left(List5.List(i), 2))
End If
If Trim$(Len(List5.List(i))) > 3 Then
a = Hex(Mid(List5.List(i), 6, 5))
...
når det tallet 23870 skrives til filen således :
Put #9, , CInt(Mid(List5.List(i), 6, 5))

bliver tallet 23870 til "3E5D" Decimalværdien af HEX tallet "3E5D" = 15710 !!!
men resultatet skulle se sådan ud "5D3E" hvor decimalværdien =23870 !
Der byttes rundt på værdien når jeg skrive til binærfilen. "

hvorfor ?

tallet 23870 udtrækker jeg fra en VB6 listbox.item som ser sådan ud
"10: 89 23870:3"
mvh
Andreas Andersen (15.05.2016, 18:58)
Den 14-05-2016 kl. 10:32 skrev per Juul Larsen:
[..]
> Put #9, , CInt(Mid(List5.List(i), 6, 5))
> bliver tallet 23870 til "3E5D" Decimalværdien af HEX tallet "3E5D" = 15710 !!!
> men resultatet skulle se sådan ud "5D3E" hvor decimalværdien = 23870 !
> Der byttes rundt på værdien når jeg skrive til binærfilen. "
> hvorfor ?
> tallet 23870 udtrækker jeg fra en VB6 listbox.item som ser sådan ud
> "10: 89 23870:3"


Det handler om i hvilken rækkefølge bytes gemmes, den mindst betydende
byte er i dit eksempel gemt forrest, det hedder little endian. Den
omvendte rækkefølge hedder big endian. Se
[..]
per Juul Larsen (15.05.2016, 21:34)
Den søndag den 15. maj 2016 kl. 18.58.27 UTC+2 skrev Andreas Andersen:
> Den 14-05-2016 kl. 10:32 skrev per Juul Larsen:
> Det handler om i hvilken rækkefølge bytes gemmes, den mindst betydende
> byte er i dit eksempel gemt forrest, det hedder little endian. Den
> omvendte rækkefølge hedder big endian. Se
> [..]
> --
> Andreas


tak for dit svar...
det forklarer en hel del og timers grublen... måske kan byteswap gøre forskellen.
mvh pjl
Lignende emner