Provero' a espormi meglio (anche se sono proprio negato a parlareOriginariamente inviato da unomichisiada
Le librerie me le sto scaricando in questo istante.
Vorrei aiutarti (anche se non è detto che ci riesca) però non ho capito bene il problema,e neanche bene la situazione.Potresti cercare di esporlo in maniera diversa così magari riesco a capire?
L'unica cosa che ho capito per ora è che tu vuoi riuscire a memorizzare in una certa variabile ( il cui tipo presumo ti sia fornito da queste librerie) un valore molto grande (oltre i 12 bytes) e le funzioni di memorizzazione in questa variabile prendono il valore come stringa,giusto?E poi?Cosa ci devi fare con la variabile,e prchè non riesci ad utilizzarla?.Se non ho capito niente prova a rispiegarmelo magari mi viene in mente qualcosa se capisco.)...
Le variabili intere (e senza segno) (di cui fanno parte anche i char, in quanto in realta' sono un intero che va da -128 a 127 (o da 0 a 255 gli unsigned) che rappresenta il codice ascii del carattere), a differenza di quelle decimali, vengono memorizzate nella RAM (o sul disco) in maniera binaria cosicche' leggendo il valore binario di una variaible, chiunque e' in grado di trovare il valore della variabile (ad esempio un char il cui valore binario e' "00000001" vale 1, mentre uno short con valore binario "00000001 00000010" vale 258 (256+2) )...
Io dispongo gia' di un valore intero memorizzato in questo formato, ossia in binario (un valore che se quindi fosse su 4 bytes corrisponderebbe ad un int, mentre se fosse su 2 corrisponderebbe ad uno short ... ), ma che occupa molti bytes (ad esempio 20) *ovviamente per fare questo ho dovuto allocare 20 bytes in memoria e scrivere il valore in esso trattandolo come array di char*...
Praticamente ho gia' un intero che occupa 20 bytes... Il problema e' che questo intero non e' supportato dalle funzioni e dagli operatori del C (ne' del C++), quindi se io provassi a stamparlo con la printf (o con la cout), questa lo tratterebbe come se fosse un int, tagliandogli 16 byte e considerandone soltanto 4, quelli occupati da un int...
Oltre alle operazioni di stampa su files e su video (che corrispondono ad eseguire un itoa() che trasforma l'intero in stringa e quindi scrivere la stringa uscente sul file descriptor STDOUT_FILENO), mancano appunto anche il supporto degli operatori (che non eseguono somme, sottrazioni etc su tipi di dato diversi da quelli predefiniti) ed il supporto a funzioni tipo la itoa che trasformano il numero in stringa...
Capito? Spero di essermi spiegato un po' meglio...
Le funzioni della libreria GMP pero' permettono di memorizzare in una variabile un valore passatogli sottoforma di stringa (eseguendo una atoi modificata) o sottoforma di intero (di 4 bytes quindi, non di 20)... E come faccio io a passargli un intero che occupa 20 bytes?

)...
Rispondi quotando