Differenze tra le versioni di "Conversione del Tempo Delta fra due eventi Midi in un valore esadecimale in formato "a lunghezza variabile""

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il ''Tempo Delta'', che nel file Midi divide un evento Midi dall'evento immediatamente precedente, assume un formato ''a lunghezza variabile''. Il formato "''a lunghezza vari...")
 
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il ''Tempo Delta'', che nel file Midi divide un evento Midi dall'evento immediatamente precedente, assume un formato ''a lunghezza variabile''.
+
#REDIRECT [[Conversione_del_Tempo_Delta_fra_due_eventi_Midi_dai_secondi_nel_valore_esadecimale_in_formato_"a_lunghezza_variabile"]]
 
 
Il formato "''a lunghezza variabile''" rappresenta i numeri usando solo sette bit per byte, mentre il bit <I>più significativo</i> è impostato ad un valore tale da poterlo riconoscere. Se la rappresentazione contiene più byte per esprimere un numero, il bit più significativo dei primi byte sarà posto sempre ad 1, mentre quello dell'ultimo byte sarà sempre posto a 0. Tale impostazione sta ad indicare che, quando il bit più significativo è posto ad 1, tale byte <U>non</u> è l'ultimo della rappresentazione esadecimale, ma che dopo di esso v'è un altro byte. Se il bit più significativo è invece posto a 0, allora vuol dire che il byte, al quale quel bit appartiene, è l'ultimo della rappresentazione.
 
 
 
 
 
Di seguito verrà mostrato un algoritmo per ottenere la ''rappresentazione'' esadecimale di un dato "''a lunghezza variabile''".
 
'''Public''' Sub Button1_Click()
 
 
 
  Dim s As String
 
  Dim ss As New String[]
 
  Dim i, c rob As Integer
 
 
 
  s = InputBox("Immetti un numero in forma decimale:")
 
 
 
  i = Val(s)
 
 
 
  i = i Mod 128
 
  ss.Push(Hex(i))
 
 
 
  rob = Fix(i / 128)
 
 
 
  While rob > 0
 
    c = rob Mod 128
 
    c = c Or 128
 
    ss.Push(Hex(a))
 
    rob = Fix(rob / 128)     
 
  Wend
 
 
 
  ss.Reverse()
 
 
 
<Font Color=gray>' ''Mostra il valore finale con formato "a lunghezza variabile":''</font>
 
  Print ss.Join(Null, Null)
 
 
 
'''End'''
 

Versione attuale delle 09:06, 15 apr 2018