Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Devo trasformare (ad esempio) la parola hellohello in una stringa formata da 8 bit, in modo da poterla utilizzare per mandare SMS sui cellulari. Dopo aver visto l'alfabeto da utilizzare per effettuare la conversione, ci serviremo di una funzione che converte un numero decimale in numero binario ed un'altra funzione che effettua l'operazione inversa.
Cominciamo a definire le due funzioni appena citate:
La prima funzione si chiama Dec2Bin, che pronunciato in inglese suona come Dec To Bin, ovvero Decimale a binario. Questa effettua una serie di divisioni e di moduli, secondo il sistema di conversione in binario. Questa funzione verifica che la stringa binaria risultante sia lunga almeno un certo numero di caratteri (valore di LUNGHEZZA). Se la lunghezza è minore di tale valore inserisce degli zeri alla sinistra del numero.
Quest'ultima funzione effettua l'operazione inversa della funzione precedente. Da un stringa binaria restituisce il valore intero corrispondente. Prima di iniziare con la vera funzione di conversione spiegamo con calma il procedimento da seguire. Prendiamo innanzitutto in esame la stringa hellohello da convertire. Convertiamo i singoli valori ASCII di ogni carattere in binario:
Come possiamo vedere dalla tabella sopra, ogni carattere di testo è formato da un massimo di 7 bit. Per questo ogni carattere semplice verrà chiamato Settetto. Il processo di conversione per l'invio via SMS richiede che il testo sia convertito in ottetti, in una maniera particolare.
Il primo settetto viene convertito in ottetto prendendo il bit all'estrema destra del secondo carattere e mettendolo alla sinistra del primo bit del primo carattere. Otterremmo così il primo ottetto: 11101000. Il primo bit in rosso è l'ultimo bit del secondo carattere. Il secondo settetto perde l'ultimo bit e rimangono sei bit. Aggiungiamo a questi sei bit gli ultimi due (8 - 6) bit del terzo carattere. Otteniamo: 00110010. Due bit del terzo carattere e sei bit del secondo, perché l'ultimo bit del secondo carattere è stato utilizzato per il primo. Procediamo con il terzo ottetto: abbiamo 5 bit del settetto e 3 bit del carattere successivo: 10011011. E così via... Otterremmo quindi il seguente risultato:
Così i 10 settetti verranno convertiti in 9 ottetti.
Le prime 4 righe dopo l'intestazione della funzione dichiarano 4 variabili:
Alla riga 24 inizializziamo l'alfabeto creato nel modulo precedente con la Sub InizializzaAlfabeto. Subito dopo abbiamo un ciclo for che costruisce la stringa TEMPSTR.
Per ogni singolo carattere della stringa MESSAGGIO estrae la stringa
di 7 bit con Dec2Bin e la concatena alla stringa TEMPSTR.
Questa riga aggiunge 7 zeri finali alla stringa TEMPSTR che verranno utilizzati dall'ultimo ottetto. La funzione String genera una stringa di un certo numero di caratteri,
tutti uguali.
Sulla riga 35 memorizziamo il numero iniziale di bit da prendere in considerazione per ogni settetto. All'inizio prenderemo l'intero settetto, per cui il valore di LUNGHEZZADAESAMINARE sarà 7.
Ora inizia il vero ciclo di conversione. Per ogni settetto della stringa eseguiremo certe operazioni. Alla riga 37 memorizziamo la prima parte dell'ottetto ovvero i caratteri rimasti del settetto preso in esame. Il numero di bit da memorizzare in OTTETTO è specificato dalla variabile LUNGHEZZADAESAMINARE.
La riga 38 è il centro di questa funzione. Essa fa precedere a
OTTETTO i bit finali del settetto successivo. A partire da dove deve prendere quei bit? Infatti al primo ciclo TEMP avrà valore 1 e LUNGHEZZADAESAMINARE
7. Dal 14° carattere abbiamo bisogno di un certo numero di caratteri per generare un ottetto, quindi 8 - LUNGHEZZADAESAMINARE. Prenderemo allora 1 carattere dal 14 bit. In seguito di questo diminuiamo LUNGHEZZADAESAMINARE di 1. Dopo il primo ciclo allora sarà 6 il suo valore. Se mediante l'ultima operazione LUNGHEZZADAESAMINARE giunge a 0 dice
di ricominciare il conteggio da 7 e saltare un carattere poiché
tutti i bit di questo settetto saranno già stati presi dal ottetto
precedente.
La riga 44 prende l'ottetto binario e lo converte in esadecimale mediante due operazioni. Prende l'ottetto binario, lo converte in decimale utilizzando la funzione Bin2Dec. Il risultato di quest'operazione sarà un numero decimale che andrà ad essere convertito in esadecimale dalla funzione di VB Hex. Il risultato di Hex sarà memorizzato nella variabile OTTETTO. Dopo questo momento OTTETTO conterrà un valore esadecimale e non più un valore binario. La riga 45 effettua un controllo d'obbligo. Se la lunghezza di OTTETTO è di un carattere, aggiunge alla sinistra di tale carattere uno zero ottenendo una cifra esadecimali completa di 2 caratteri.
L'ultima riga del ciclo memorizza i singoli ottetti nella variabile CodificaSMS
che sarà il valore restituito all'uscita della funzione. |
Questo processo di conversione termina qui. Fibia
FBI
|
Torna all'introduzione delle Richieste dei lettori |