Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > dk.edb.programmering > #12 > unrolled thread
| Started by | per Juul Larsen <pjlarsen@gmail.com> |
|---|---|
| First post | 2016-05-14 01:32 -0700 |
| Last post | 2016-05-15 12:34 -0700 |
| Articles | 3 — 2 participants |
Back to article view | Back to dk.edb.programmering
Binary file per Juul Larsen <pjlarsen@gmail.com> - 2016-05-14 01:32 -0700
Re: Binary file Andreas Andersen <andreas2411@gmail.com> - 2016-05-15 18:58 +0200
Re: Binary file per Juul Larsen <pjlarsen@gmail.com> - 2016-05-15 12:34 -0700
| From | per Juul Larsen <pjlarsen@gmail.com> |
|---|---|
| Date | 2016-05-14 01:32 -0700 |
| Subject | Binary file |
| Message-ID | <a3474c37-dcef-4ef9-9dd0-f81f2ca9c61b@googlegroups.com> |
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
[toc] | [next] | [standalone]
| From | Andreas Andersen <andreas2411@gmail.com> |
|---|---|
| Date | 2016-05-15 18:58 +0200 |
| Message-ID | <5738aab1$0$297$14726298@news.sunsite.dk> |
| In reply to | #12 |
Den 14-05-2016 kl. 10:32 skrev per Juul Larsen: > 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" 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 https://en.wikipedia.org/wiki/Endianness -- Andreas
[toc] | [prev] | [next] | [standalone]
| From | per Juul Larsen <pjlarsen@gmail.com> |
|---|---|
| Date | 2016-05-15 12:34 -0700 |
| Message-ID | <f5ffd39b-7df4-4c19-8a8e-dbe119171b23@googlegroups.com> |
| In reply to | #13 |
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: > > 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" > > 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 > https://en.wikipedia.org/wiki/Endianness > > -- > Andreas tak for dit svar... det forklarer en hel del og timers grublen... måske kan byteswap gøre forskellen. mvh pjl
[toc] | [prev] | [standalone]
Back to top | Article view | dk.edb.programmering
csiph-web