Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Siamo volati fino a Belfast, capitale dell'Irlanda Del Nord, per scoprire il nuovo Realme 15 Pro 5G Game Of Thrones Limited Edition. Una partnership coi fiocchi, quella tra Realme e HBO, un esercizio di stile davvero ben riuscito. Ma vi raccontiamo tutto nel nostro articolo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-11-2008, 11:48   #1
Napalm
Senior Member
 
L'Avatar di Napalm
 
Iscritto dal: May 2000
Messaggi: 1135
[C#] Conversione ASCII in string

Ciao a tutti,

io ho una stringa che rappresenta una frase in esadecimale (abcdefg) "006162636465666700000000" più altri caratteri (gli "00"). Il mio problema è di convertire quella stringa in una stringa "leggibile" da parte dell'utente ma non ho capito come fare.
Grazie

NapalM
__________________
Quote:
Originariamente inviato da trallallero Guarda i messaggi
Gli anti-fascisti, quelli fascisti coi fascisti, "i diversamente fascisti" (cit. "Napalm"), non meritano il mio rispetto

Ultima modifica di Napalm : 07-11-2008 alle 11:52.
Napalm è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2008, 15:13   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Codice:
            string input = "006162636465666700000000";
            StringBuilder output = new StringBuilder("");
            for (int i = 0; i < input.Length-1; i+=2)
            {
                Int32 n = Convert.ToInt32(input.Substring(i, 2), 16);
                if (n != 0)
                {
                    char C = Convert.ToChar(n);
                    output.Append(C);
                }
            }
            MessageBox.Show(output.ToString());
Prova...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2008, 18:13   #3
Napalm
Senior Member
 
L'Avatar di Napalm
 
Iscritto dal: May 2000
Messaggi: 1135
Grazie mille

NapalM
__________________
Quote:
Originariamente inviato da trallallero Guarda i messaggi
Gli anti-fascisti, quelli fascisti coi fascisti, "i diversamente fascisti" (cit. "Napalm"), non meritano il mio rispetto
Napalm è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2008, 22:02   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da Napalm Guarda i messaggi
Grazie mille

NapalM
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2009, 11:12   #5
Samb1985
Senior Member
 
L'Avatar di Samb1985
 
Iscritto dal: Feb 2007
Città: San Benedetto del Tronto
Messaggi: 538
a me serve il contrario...data una stringa ASCII es. "Hello" devo ottenere una stringa contenente i valori in esadecimale dei singoli caratteri "48464C4C4F". Come posso farlo ?
__________________
Ogni popolo ha il governo che si merita...

Ho concluso trattative con: Aminopro, malag, oldfield
Samb1985 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2009, 13:28   #6
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da Samb1985 Guarda i messaggi
a me serve il contrario...data una stringa ASCII es. "Hello" devo ottenere una stringa contenente i valori in esadecimale dei singoli caratteri "48464C4C4F". Come posso farlo ?
Così:
Codice:
System.Text.Encoding.ASCII.GetBytes(TUA_STRINGA)
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2009, 14:29   #7
Samb1985
Senior Member
 
L'Avatar di Samb1985
 
Iscritto dal: Feb 2007
Città: San Benedetto del Tronto
Messaggi: 538
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Così:
Codice:
System.Text.Encoding.ASCII.GetBytes(TUA_STRINGA)
L'ho appena provato e restituisce 7269767679 invece di 48464C4C4F, come mai ? (TUA_STRINGA è HELLO)
__________________
Ogni popolo ha il governo che si merita...

Ho concluso trattative con: Aminopro, malag, oldfield
Samb1985 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2009, 14:51   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Samb1985 Guarda i messaggi
L'ho appena provato e restituisce 7269767679 invece di 48464C4C4F, come mai ? (TUA_STRINGA è HELLO)
72d = 0x48
69d = 0x46
76d = 0x4C

Stai stampando i bytes in decimale. Stampali in esadecimale e ti verra' fuori il risultato
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2009, 15:01   #9
Samb1985
Senior Member
 
L'Avatar di Samb1985
 
Iscritto dal: Feb 2007
Città: San Benedetto del Tronto
Messaggi: 538
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
72d = 0x48
69d = 0x46
76d = 0x4C

Stai stampando i bytes in decimale. Stampali in esadecimale e ti verra' fuori il risultato
come li converto in esadecimale ? qual'è il comando ?
__________________
Ogni popolo ha il governo che si merita...

Ho concluso trattative con: Aminopro, malag, oldfield
Samb1985 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2009, 15:45   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da Samb1985 Guarda i messaggi
a me serve il contrario...data una stringa ASCII es. "Hello" devo ottenere una stringa contenente i valori in esadecimale dei singoli caratteri "48464C4C4F". Come posso farlo ?
Sicuro che non sia "48454C4C4F" ?

Comunque metodi ce ne sono diversi, come questo :

Codice:
            string input = "HELLO";
            StringBuilder stringaHex = new StringBuilder("");
            byte[] caratteri = System.Text.Encoding.ASCII.GetBytes(input);
            foreach (char ch in caratteri)
            {
                string h = String.Format("{0:X}", Convert.ToInt32(ch));
                stringaHex.Append(h);
            }
            MessageBox.Show(stringaHex.ToString());
o questo :

Codice:
            string input = "HELLO";
            StringBuilder stringaHex = new StringBuilder();
            foreach (char c in input)
            {
                stringaHex.Append(Convert.ToString((int)c, 16 ));
            }
            MessageBox.Show(stringaHex.ToString());
...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2009, 09:26   #11
Samb1985
Senior Member
 
L'Avatar di Samb1985
 
Iscritto dal: Feb 2007
Città: San Benedetto del Tronto
Messaggi: 538
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Sicuro che non sia "48454C4C4F" ?

Comunque metodi ce ne sono diversi, come questo :

Codice:
            string input = "HELLO";
            StringBuilder stringaHex = new StringBuilder("");
            byte[] caratteri = System.Text.Encoding.ASCII.GetBytes(input);
            foreach (char ch in caratteri)
            {
                string h = String.Format("{0:X}", Convert.ToInt32(ch));
                stringaHex.Append(h);
            }
            MessageBox.Show(stringaHex.ToString());
o questo :

Codice:
            string input = "HELLO";
            StringBuilder stringaHex = new StringBuilder();
            foreach (char c in input)
            {
                stringaHex.Append(Convert.ToString((int)c, 16 ));
            }
            MessageBox.Show(stringaHex.ToString());
...
Sto cercando di utilizzare il secondo e adattarlo al mio caso.
Invece di mettere il valore in stringaHex devo mettere il valore esadecimale di ogni carattere in una variabile byte txBuff[]
Qual'è il codice per inserire ogni valore esadecimale di c e inserirlo nel vettore di tipo byte ?
__________________
Ogni popolo ha il governo che si merita...

Ho concluso trattative con: Aminopro, malag, oldfield
Samb1985 è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2009, 12:42   #12
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da Samb1985 Guarda i messaggi
Sto cercando di utilizzare il secondo e adattarlo al mio caso.
Invece di mettere il valore in stringaHex devo mettere il valore esadecimale di ogni carattere in una variabile byte txBuff[]
Qual'è il codice per inserire ogni valore esadecimale di c e inserirlo nel vettore di tipo byte ?
Codice:
            string input = "HELLO";
            byte[] txBuff = new byte[input.Length];
            string hexChar;
            for(int i=0;i<input.Length;i++)
            {
                hexChar = Convert.ToString((int)input[i], 16);
                txBuff[i] = byte.Parse(hexChar, System.Globalization.NumberStyles.HexNumber);
            }
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2009, 23:56   #13
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Codice:
            string input = "HELLO";
            byte[] txBuff = new byte[input.Length];
            string hexChar;
            for(int i=0;i<input.Length;i++)
            {
                hexChar = Convert.ToString((int)input[i], 16);
                txBuff[i] = byte.Parse(hexChar, System.Globalization.NumberStyles.HexNumber);
            }
Il risultato è lo stesso che fare
Codice:
byte[] txBuff = System.Text.Encoding.ASCII.GetBytes(input);
ma con l'aggiunta gratuita di un overhead enorme.
Non ha senso parlare di bytes in formato decimale o esadecimale tranne che se uno li stampa. E per stamparli il modo più veloce e pulito è fare
Codice:
foreach(var b in txBuff) Console.Write(b.ToString("X2")); //stampa esattamente quello che ti aspetteresti
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 05-05-2009, 07:48   #14
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Il risultato è lo stesso che fare
Codice:
byte[] txBuff = System.Text.Encoding.ASCII.GetBytes(input);
ma con l'aggiunta gratuita di un overhead enorme.
Non ha senso parlare di bytes in formato decimale o esadecimale tranne che se uno li stampa. E per stamparli il modo più veloce e pulito è fare
Codice:
foreach(var b in txBuff) Console.Write(b.ToString("X2")); //stampa esattamente quello che ti aspetteresti
Sì, grazie, lo so anch'io.
La richiesta di Samb1985 era espressamente questa :
"Qual'è il codice per inserire ogni valore esadecimale di c e inserirlo nel vettore di tipo byte ?"
A domanda ho risposto, ipotizzando che, per qualche oscuro motivo dovesse prima avere i valori esadecimali di ogni carattere, uno per uno, e poi inserirli nell'array di Byte.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 05-05-2009, 08:20   #15
Samb1985
Senior Member
 
L'Avatar di Samb1985
 
Iscritto dal: Feb 2007
Città: San Benedetto del Tronto
Messaggi: 538
Vi ringrazio entrambi per l'auito. Sto risolvendo.
Ho bisogno dei singoli valori perchè essendo un comando per un dispositivo collegato via usb, i valori che ottenuti dalla stringa sono una parte variabile del vettore dalla posizione 11 in poi, mentre le prime posizioni sono valori fissi.
__________________
Ogni popolo ha il governo che si merita...

Ho concluso trattative con: Aminopro, malag, oldfield
Samb1985 è offline   Rispondi citando il messaggio o parte di esso
Old 05-05-2009, 09:39   #16
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
In tal caso ti consiglio di usare questo sistema:
Codice:
byte[] datiFissi = ...;
datiFissi.Concat(System.Text.Encoding.ASCII.GetBytes(TUA_STRINGA)).ToArray()
La cosa è fattibile solo se stai usando C# 3 (e quindi se stai compilando per .NET 3.5) e richiede la direttiva
Codice:
using System.Linq;
ma se questo è un opzione, allora io trovo che quel modo di risolvere il problema sia decisamente il più elegante.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti Recensione Realme 15 Pro Game Of Thrones: un ver...
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
Impulse Space svilupperà un lande...
I 2 mini aspirapolvere più potent...
The Crew 2 diventa finalmente giocabile ...
Sta succedendo davvero: Assetto Corsa Ra...
I 5 smartphone più scontati su Amazon: m...
Disponibilità OxygenOS 16: ecco q...
OxygenOS 16 ufficiale: tutte le novit&ag...
Nio sotto pressione: azioni crollano dop...
Spotify collaborerà con le major ...
Ingegneria Dei Sistemi svilupperà...
La gamma di iPhone sarà sempre pi...
Alla guida di nuova Alfa Romeo Tonale pl...
9 articoli su Amazon senza rivali, aggio...
HONOR svela il nuovo Watch 5 Pro e le cu...
MacBook Air 15'' con chip M4 in super of...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v