Autore Topic: Ottenere un numero dalla sua memorizzazione in formato Big-Endian  (Letto 584 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Vorrei ampliare il numero di algoritmi previsti in questa pagina della nostra WIKI:
http://www.gambas-it.org/wiki/index.php?title=Ottenere_un_numero_dalla_sua_memorizzazione_in_formato_Big-Endian

Avete altri suggerimenti, purché siano brevi e non facciano uso di un vettore di tipo Byte[ ] d'appoggio ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #1 il: 17 Aprile 2018, 23:12:44 »
La mia versione:

Codice: [Seleziona]
Public Sub Form_Open()
Dim fl As File
Dim i As Integer
Dim a, b As Byte
fl = Open "/percorso/del/file" For Read
For a = 0 To 2
   Read #fl, b
   i += b * 2 ^ (8 * a)
Next
fl.Close
Print i
End
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #2 il: 17 Aprile 2018, 23:25:52 »
La mia versione:

Non va bene: mi restituisce il risultato come fosse in Little-Endian, ossia, riprendendo il valore proposto come esempio nella pagina della wiki, mi dà 328449, e non 66309 !
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #3 il: 18 Aprile 2018, 00:03:24 »
Domani cerco di correggerlo.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #4 il: 18 Aprile 2018, 00:29:06 »
Domani cerco di correggerlo.

Va bene.
La tua è stata una buona intuizione.
La versione corretta io l'ho già trovata, ma resterò in attesa di te.
Se correggi il codice (e ti dico che sei proprio ad un pelo dalla versione esatta !), lo inserirò nella pagina precisando ovviamente che l'hai proposto tu.

Insomma, avendo memorizzato nel file il solo valore 66309 (che in esadecimale è &h010305), alla fine del codice ponendo questa riga:
Codice: [Seleziona]
Print i, Hex(i, 6)
devi ottenere questi risultati (in rappresentazioni decimale ed esadecimale):
66309   010305
« Ultima modifica: 18 Aprile 2018, 00:34:49 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #5 il: 20 Aprile 2018, 11:41:21 »
Così forse?
La butto li che ora non ho tempo di testare.

Codice: [Seleziona]
Public Sub Form_Open()
Dim fl As File
Dim i As Integer
Dim a, b As Byte
fl = Open "/percorso/del/file" For Read
For a = 0 To 2
   Read #fl, b
   i += b * 2 ^ (8 * (2- a))
Next
fl.Close
Print i
End
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #6 il: 20 Aprile 2018, 12:10:30 »
Così forse?
Va bene, bravo: hai risolto.
Metterò il tuo codice in wiki con citazione " magna cum laude " ! 


Avresti potuto fare anche così:
Codice: [Seleziona]
Public Sub Main()
 
  Dim fl As File
  Dim i As Integer
  Dim b As Byte
  Dim c As Short

   fl = Open "/percorso/del/file" For Read

   For c = 2 To 0 Step -1
     Read #fl, b
     i += b * 2 ^ (8 * c)
   Next

   fl.Close

   Print i, Hex(i, 6)

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Ottenere un numero dalla sua memorizzazione in formato Big-Endian
« Risposta #7 il: 20 Aprile 2018, 21:21:42 »
Va bene, bravo: hai risolto.
Metterò il tuo codice in wiki con citazione " magna cum laude " ! 

Yuppi, se magna! Dove si va? ;D
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.