dove il test.txt conteneva la stringa che lui ha postato
Lui ha postato prima questa stringa (che qui riporto accennata):
0x2f396a2f344......etc.....
poi ha postato quest'altra:
"/9j/4AAQSkZJRgABAQEAYABgAAD......etc...."
che paradossalmente pensava fosse errata, ed invece è quella "buona".
Come gli ho spiegato, la prima delle due stringhe, da lui postate, contiene semplicemente i
singoli caratteri numerici dei valori esadecimali - espressi in base64 - dell'immagine da riprodurre.
In sostanza, il primo data-byte in base64 dell'immagine sarebbe in realtà il valore &h2f. Se ottenessimo il corrispondente valore stringa ASCII vedremmo stampato ad esempio in console il carattere "/". Invece la prima stringa, da lui postata, riporta il carattere stringa ASCII "2"... e non va bene, ovviamente.
In sostanza quella prima stringa riporta e ci mostra ciascuno dei due caratteri numerici costitutivi di ogni valore esadecimale dell'immagine.
Cerco di essere ancora più chiaro:
se il primo valore-byte dell'immagine da ricreare è
&h2f (che corrisponde al valore stringa ASCII dello
slash "/"), la prima stringa - da lui postata - riporta i caratteri ASCII del numero "2" (...che ha valore &h32 del protocollo ASCII) e della lettera "f" (che ha valore &h66 del protocollo ASCII).
Pertanto, lui passando la prima stringa, NON passa - quale
primo valore-byte - il valore &h2f (come sarebbe corretto),
bensì &h32 !!!
Come sappiamo, infatti una cosa è il
valore numerico, espresso in rappresentazione esadecimale, dell'intero
&h2f, altra cosa sono i caratteri stampabili del numero "2" e della lettera "f" (ciascuno dei quali - fra l'altro - corrisponde a un valore numerico nella tabella del protocollo ASCII).
Se dunque il primo dato-byte del file immagine è il valore numerico &h2f, questo è appunto
1 byte. Invece, passando i caratteri stampabili "2" e "f", si passano
2 byte: &h32 e &h66, che nulla hanno a che vedere con il predetto valore numerico &h2f, se non quello di essere la sua mera raffigurazione "
grafica":
2f.
...non so se mi spiego !
Avendo intuito ciò, cosa ho fatto io nel mio primo codice ? Ho preso i caratteri del numero "2" e della "f", li ho uniti (essendo comunque valori stringa) e li ho gestiti con la funzione Val() per ottenerne il corrispondente reale ed effettivo valore &h2f, sebbene espresso in decimale (ma ciò poco importa). Poi con la funzione Chr() ho cominciato a costruire in memoria la "vera" sequela di valori di tipo String da passare in fine alla funzione FromBase64().
Ad ogni modo, questa conversione è divenuta ovviamente inutile nel momento in cui lui ha postato la reale stringa di caratteri ASCII corrispondenti esattamente ai valori-byte dell'immagine (...e che io avevo dovuto ricreare pazientemente uno ad uno da ogni
coppia di caratteri numerici presi dalla prima stringa postata).