Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Conversione hex->int elegante

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[11] Re: Conversione hex->int elegante

Messaggioda Foto Utenteboiler » 28 ott 2015, 0:47

Così ottengo 57-48 = 9, invece dello 0.
Funzionerebbe per i numeri se facessi rrFlag = 48-c

Vedo che hai corretto mentre rispondevo.

Ma non funziona per le lettere (A-F e a-f) per le quali mi servirebbero altre due condizioni.

Non credo che per finire l'efficenza sia di molto migliore.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5613
Iscritto il: 9 nov 2011, 12:27

0
voti

[12] Re: Conversione hex->int elegante

Messaggioda Foto UtenteIlGuru » 28 ott 2015, 0:56

Con

if ( c|32 < 'a' )

potrebbe funzionare ma a mezzanotte e dal telefono non mi ci metto a fare la prova :)
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

[13] Re: Conversione hex->int elegante

Messaggioda Foto UtenteRussell » 28 ott 2015, 0:57

boiler ha scritto:non funziona per le lettere (A-F e a-f)


si esatto, si evolverebbe in:

Codice: Seleziona tutto
int StringToHex(char c){
  if(c<'A') return c-'0';  // Numero 0..9
  if(c<'a') return c-'A'+10; // Lettere A...F
  return c-'a'+10;  // Lettere a...f
}


(ancora da debuggare probabilmente :oops: )

boiler ha scritto:Non credo che per finire l'efficenza sia di molto migliore.

con la (elegante) funzione C# che segnali è necessario un loop lungo tutto l'array, con confronto via via...
in questo caso hai un test (max 2) e una somma... dovrebbe essere piu' veloce a naso
poi certo, scritto in C#, non sarà mai come farlo in C++
ad ogni modo non amo il .NET, devi offuscare il codice che rimane leggibile altrimenti, è interpretato, quindi è lento, ecc... pero' certamente in un attimo si scrive una buona interfaccia GUI.. come al solito dipende da cosa si deve fare :D
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

1
voti

[14] Re: Conversione hex->int elegante

Messaggioda Foto Utentesimo85 » 28 ott 2015, 1:04

boiler ha scritto:Come converto una singola cifra esadecimale contenuta in una stringa (quindi un carattere) nel corrispondente integer?

Foto Utenteboiler, anche questa la si può fare in C con una sola linea

http://man7.org/linux/man-pages/man3/strtol.3.html

:mrgreen:

O_/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[15] Re: Conversione hex->int elegante

Messaggioda Foto Utenteboiler » 28 ott 2015, 1:13

Russell ha scritto:
boiler ha scritto:Non credo che per finire l'efficenza sia di molto migliore.

con la (elegante) funzione C# che segnali è necessario un loop lungo tutto l'array, con confronto via via...
in questo caso hai un test (max 2) e una somma... dovrebbe essere piu' veloce a naso
poi certo, scritto in C#, non sarà mai come farlo in C++


Ammetto che senza conoscere il contesto, la mia affermazione sia opinabile.
La riformulo. So che deve cercare nell'array elemento dopo elemento ma:
- stiamo parlando di un processore con 4 cores a 3.2 GHz
- l'array ha lunghezza 16 e contiene chars
- l'operazione va eseguita una volta ogni paio di secondi

Mi sento abbastanza sicuro di dire che nessuno si lamenterà mai della performance scarsa :mrgreen:

Boiler

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5613
Iscritto il: 9 nov 2011, 12:27

1
voti

[16] Re: Conversione hex->int elegante

Messaggioda Foto Utenteboiler » 28 ott 2015, 1:19

simo85 ha scritto:Foto Utenteboiler, anche questa la si può fare in C con una sola linea
http://man7.org/linux/man-pages/man3/strtol.3.html


La stringa è quella che esce da un ADAM-4060 e ha il formato "!xy0000<CR>" dove x e y sono i due char che devo convertire (a dipendenza di cosa voglio fare).

Checkmate (si scherza, eh, apprezzo queste discussioni!)

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5613
Iscritto il: 9 nov 2011, 12:27

1
voti

[17] Re: Conversione hex->int elegante

Messaggioda Foto Utenteboiler » 28 ott 2015, 1:27

Tra l'altro, giusto per chiarire la mia posizione, non sto facendo pubblicità per la Microsoft. Parlo di C# perché è quello che uso e che conosco meglio.

Come detto, lo stesso metodo si può usare praticamente pari pari con quella schifezz... ehm... meraviglia di Python.

E anche C++ ha la sua funzione find nella classe string con cui si può implementare qualcosa di simile.

L'accento del thread era su tre cose:
1) C'è gente che usa soluzioni innovative ed eleganti senza fermarsi alla soluzione ovvia. Ed è gente che ammiro moltissimo.
2) Illustrare un metodo interessante che può essere usato quando la funzione è non standard (invece della conversione da hex qualche altro codice strampalato, vi accorgerete che è utile quando vi servirà)
3) Sottolineare che quello che spesso per chi viene dall'elettronica e dal microcontroller è il dogma (efficenza) è nel 90% dei casi irrilevante nella programmazione di alto livello. Tutti coloro con i quali ho avuto a che fare e che venivano dall'informatica mi hanno sempre detto di lasciar perdere e concentrarmi sulla chiarezza/leggibilità/comodità del codice.

Qui C# è il mezzo, non il fine!

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5613
Iscritto il: 9 nov 2011, 12:27

1
voti

[18] Re: Conversione hex->int elegante

Messaggioda Foto UtenteTardoFreak » 28 ott 2015, 1:54

java.png
java.png (20.89 KiB) Osservato 2087 volte

:-"
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[19] Re: Conversione hex->int elegante

Messaggioda Foto UtenteSjuanez » 28 ott 2015, 6:27

boiler ha scritto:L'accento del thread era su tre cose:
1) C'è gente che usa soluzioni innovative ed eleganti senza fermarsi alla soluzione ovvia. Ed è gente che ammiro moltissimo.
2) Illustrare un metodo interessante che può essere usato quando la funzione è non standard (invece della conversione da hex qualche altro codice strampalato, vi accorgerete che è utile quando vi servirà)
3) Sottolineare che quello che spesso per chi viene dall'elettronica e dal microcontroller è il dogma (efficenza) è nel 90% dei casi irrilevante nella programmazione di alto livello. Tutti coloro con i quali ho avuto a che fare e che venivano dall'informatica mi hanno sempre detto di lasciar perdere e concentrarmi sulla chiarezza/leggibilità/comodità del codice.

Qui C# è il mezzo, non il fine!

Boiler


Niente da aggiungere! :ok:

Il punto 3 lo proclamo da un po anche su questo forum, ci credo fermamente. Con le attuali potenze di calcolo, certi discorsi sull'efficienza sono anacronistici.
http://www.commitstrip.com/en/2015/10/2 ... -problems/

Grazie per la condivisione.

O_/ O_/ O_/
Più so e più mi accorgo di non sapere.

Qualsiasi cosa abbia scritto, tieni presente che sono ancora al mio primo rocchetto di stagno.
Avatar utente
Foto UtenteSjuanez
11,3k 6 8 13
G.Master EY
G.Master EY
 
Messaggi: 3479
Iscritto il: 18 mar 2015, 13:48

Precedente

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti