Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-04-2008, 14:08   #1
di@!
Senior Member
 
Iscritto dal: Aug 2004
Messaggi: 1735
[C] Problema con puntatori e stringhe

Allora, stiamo progettando una comunicazione client-server sotto linux, ma abbiamo un problema:

Abbiamo un indirizzo del tipo "0x8fff" ecc, e inviandolo nella pipe di comunicazione viene trasformato in stringa. Il server, ricevuto il messaggio, lo vede però come stringa e dato che effettivamente non è un intero non riusciamo più a farglielo vedere com'era nel client (visto che atoi non funziona). Per esempio, abbiamo:

char *str=0xbf8c...

ma questa è una stringa chiaramente, quindi se noi lavoriamo con questa in realtà non funziona perchè creando un puntatore che contiene str in realtà questo contiene l'inidrizzo di str e non il suo contenuto.

C'hanno detto di trasformarlo in esadecimale ma non troviamo la funzione adatta, esiste? Altrimenti come possiamo fare?
di@! è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2008, 14:45   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Dai che non è difficile, se ho ben capito il problema. Ti arriva la stringa "0xB5" e sai che è in forma esadecimale, salti "0x" e per ogni carattere converti il tutto in numeri (se il carattere è compreso tra '0' e '9', prendi *str-'0' e avrai il suo valore numerico, altrimenti, se è compreso tra 'a' e 'z', puoi fare lo stesso con *str-'a'+10). Ogni posizione ha il suo peso, quindi moltiplichi per 16 il valore di ogni cifra letta andando dalla destra alla sinistra... con un ciclo for te la puoi cavare agilmente.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2008, 20:34   #3
di@!
Senior Member
 
Iscritto dal: Aug 2004
Messaggi: 1735
grazie, proveremo così

se intanto qualcun'altro ha qualche idea dica pure
di@! è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2008, 21:54   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
forse con sscanf e %X come formato.
__________________
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 13-04-2008, 22:49   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
forse con sscanf e %X come formato.
Anche, ma vuoi mettere il gusto di farla a mano?
Tanto non ci vuole niente.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2008, 22:50   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Gia'. Poi farle almeno una volta queste cose servono sempre.
__________________
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 14-04-2008, 10:55   #7
di@!
Senior Member
 
Iscritto dal: Aug 2004
Messaggi: 1735
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
forse con sscanf e %X come formato.
mm nn credo, perchè nel buffer vengono inviate insieme anche altre info, il tutto sottoforma di stringa
di@! è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 11:15   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da di@! Guarda i messaggi
mm nn credo, perchè nel buffer vengono inviate insieme anche altre info, il tutto sottoforma di stringa
Qualunque metodo deciderai di utilizzare, ti consiglio di "pulire" la stringa prima di convertirla.
Ovvero, cercherei di arrivare ad avere un metodo tipo

int FromHex(char* str);

Al quale pero' dovro' passare una stringa valida, con solo il valore esadecimale da trattare, terminata con 0, etc.
Di qui la necessita' di crare questa stringa valida.

Poi, come si decidera' di realizzare la FromHex saranno tutti cavoli di chi dovra' farla, magari tu stesso, ma almeno avrai separato e incapsulato i problemi.
Primo passo della programmazione ad oggetti (che non c'entra nulla con il C, ma almeno si iniza ad entrare nell'ottica delle idee).
__________________
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 14-04-2008, 11:51   #9
di@!
Senior Member
 
Iscritto dal: Aug 2004
Messaggi: 1735
grazie, quello di pulire la stringa lo so bene, lo faccio sempre

ma per quanto riguarda la scanf e %X, non posso usarla se poi nel buf di comunicazione client-server devo metterci anche altre cose tipo una stringa normale
di@! è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 12:09   #10
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
non e' detto che la stringa che passi alla FromHex sia per forza quella originale.
Nulla ti vieta di farne un'altra contenente proprio quello che ti serve.
Anzi, questo e' il modo che ti consiglierei io.
Spacchetta la stringa originale in tutte le stringhe che ti servono per la trattazione dei dati.
Per farlo puoi usare le normali funzioni di split (che spaccano una stringa in sottostringhe ogni volta che viene trovato un carattere particolare, tipicamente lo spazio ' ')
oppure meglio con le regular expression, se si hanno esigenze particolari.
__________________
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
 Rispondi


realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
vivo presenta la nuova serie X500: Pro M...
Tutte le offerte Amazon aggiornate, sono...
Trump annuncia l'AI Force e uno zar dell...
Marvel's Wolverine non include asset gen...
Nuova offerta WINDTRE, 200 GB in 5G a 5,...
SiPearl consegna i primi processori Rhea...
Due sistemi nervosi antichissimi si sono...
Paramount-Warner Bros. Discovery: accord...
Supra2-IMG: il generatore di immagini ch...
AMD prepara il supporto alle memorie GDD...
Progettazione di chip grazie all'IA: da ...
Google aggiorna Gmail: copiare un codice...
Un attacco radio può intercettare...
Amazon dichiara guerra agli agenti AI: d...
Controller Wireless Xbox a 48,99€ invece...
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:15.


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