svsoftware Inserito: 1 marzo 2010 Segnala Inserito: 1 marzo 2010 Salve a tutti,ho bisogno di convertire otto caratteri contenenti un numero esadecimale in un numero esadecimale.mi dite la strada più breve ?Grazie
TravelMen Inserita: 1 marzo 2010 Segnala Inserita: 1 marzo 2010 (modificato) Be se dai un occhio alla guida in linea si Simatic Step7 trovi che ogni "char" è lungo 1 byte e che viene scritto un valore in formato ACSII, per tanto recuperi la tabella dei carratteri ASCII e ti crei una funzione matematica che ti fornisca il numero tipo, te la butto li senza controllare i numeri ma solo come concetto di base:Ipotizzando che i numeri siano da Cod. ASCII 20 a Cod. ASCII 29,estrapoli il valore di ogni byte che compone la tua stringa e poiL MB1 // Carico il primo carattere L 20 // Carico il valore ASCII del numero zero -I T MB10 // Copio il risultato nel ByteQuesto è quello che farei io, ma forse esistono metodi migliori e più rapidi. Modificato: 1 marzo 2010 da TravelMen
batta Inserita: 1 marzo 2010 Segnala Inserita: 1 marzo 2010 Il concetto è corretto, ma è sbagliato il numero 20.Il codice ASCII corrispondente al carattere "0" è infatti 48 (30Hex).Poi c'è da tener presente che la semplice sottrazione del valore 48 vale per i caratteri da "0" a "9".I codici ASCI dei caratteri da "A" ad "F" vanno invece da 65 a 69 (da 41Hex a 45Hex)Nel caso sia possibile utilizzare anche i caratteri da "a" ad "f", per questi i codici vanno da 97 a 102 (da 61Hex a 65Hex).
TravelMen Inserita: 1 marzo 2010 Segnala Inserita: 1 marzo 2010 (modificato) te la butto li senza controllare i numeri ma solo come concetto di base:Grazie batta, non avendo sotto mano la tabella ASCII ho solo buttato giù il concetto, otto caratteri contenenti un numero esadecimale in un numero esadecimale.Ancora più giusto batta, non avevo considerato che il valore è in formato hex, Modificato: 1 marzo 2010 da TravelMen
svsoftware Inserita: 1 marzo 2010 Autore Segnala Inserita: 1 marzo 2010 Quindi , vediamo se ho capito bene : avendo la tabella ASCII sotto mano potrei: leggere il carattere se il carattere è compreso tra 0 e 9 sottraggo la costante che mi permette di arrivare al numero 0..9 poi la trasferisco in un byte. stessa cosa, ma con una costante di sottrazione diversa, faccio per i caratteri che vanno da 'A' a 'F'. avrei quindi un carattere che mi corrisponde ad un valore, e questo valore sta in un byte. 8 byte sono una doppia word e dovrei risolvere il mio problema. E' cosi che ho interpretato le vostre risposte ! E' CORRETTO ?? GRAZIE
TravelMen Inserita: 2 marzo 2010 Segnala Inserita: 2 marzo 2010 Si esatto, se poi vai sul . si step7 e cerchi string, ti appare in maniera molto chiara, come è composta una stringa in step7.Se poi dovessi avere dei problemi noi siamo qua.
accacca Inserita: 2 marzo 2010 Segnala Inserita: 2 marzo 2010 puoi semplificaresottrai d'ufficio '0' (0x30) se è minore di 9 hai finitoaltrimenti il numero è 'A'..'F' sottrai ancora 7se è maggiore di 0x0F allora è 'a'..'f' sottrai ancora 32se non è A..F numero sbagliatoaltrimenti ok passi al prossimo
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora