Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-09-2006, 20:38   #1
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
[c++]trasformare un file in codice esadecimale...

vorrei costruire un programma che preso un file ne genera un altro con dentro il file di prima trasformato in codice esadecimale ( ovvero qualcosa di simile 1F2E12EA... ) e poi l'operazione inversa... come fare???

grazie mille...
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 21:06   #2
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da mamo139
vorrei costruire un programma che preso un file ne genera un altro con dentro il file di prima trasformato in codice esadecimale ( ovvero qualcosa di simile 1F2E12EA... ) e poi l'operazione inversa... come fare???

grazie mille...

leggi il file un carattere alla volta trasformando il codice ascii in esa.
Il numero in esa lo devi convertire in stringa tipo "a20bf".
Prima conteggi i bytes totali del file. Poi una matrice char il cui ogni indice contenga i valori in esa (trasfomati a stringa) tutti attaccati per la dimensione dell'indice scelto in base al valore dello split voluto appunto per splittare il file.

Alla fine avrai una matrice di char con dentro:
mat(0)= "a2bf32333"... per la lunghezza dello split
mat(1)="a2bf32333" e cosi via.

per ricostruire il file prendi la matrice di char la leggi gli esa stringa e li converti in asci.

Il file dove scrivi è "mio.exe" natiralmente
okay è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 21:28   #3
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da okay
leggi il file un carattere alla volta trasformando il codice ascii in esa.
Il numero in esa lo devi convertire in stringa tipo "a20bf".
è proprio questo il problema... a me serve sapere che funzioni usare...
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 22:27   #4
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da mamo139
è proprio questo il problema... a me serve sapere che funzioni usare...
in c++
converti con atoi e poi il numero in esadecimale poi il numero esa in char nella matrice come ti ho detto sopra.

oppure ti aiuti con: fprintf(x, "%02X", stringa);



in vb invece per esempio c'è la funzioone asc(x) se non ricordo male.

Ultima modifica di okay : 23-09-2006 alle 02:20.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2006, 15:42   #5
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
e per fare il ritorno???
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2006, 20:10   #6
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da mamo139
e per fare il ritorno???
fai un for per la luinghezza della matrice.
metti in un char mat[i];
fai len(mat[i]) e fai il secondo for leggendo il solito carattere alla volta.
In questo caso sara "A" poi "1" che ne sò "b" questo valore lo porti a numero dcimale e poi da decimale ad ascii.

Non ho il codice sotto mano ora, non sono in postazione.
Io invece di farlo in esa lo faccio in binario e quando scrivo i valori nel file li scrivo a gruppi di 3 bit... devo vedere il codice...
okay è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2006, 20:20   #7
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Non conosco bene C++, ma non puoi caricare il file in un array di int e
usare la fprintf in un ciclo con, se non sbaglio, "%x"?

Scusa la sintesi, ma sono di fretta.
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 23:31   #8
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Allora come promesso...

questa è la procedura in c:

Diciamo tu hai:

CString c[5424];
CString xb;
int i;
int bv;
int n;

e la matrice di bytes così:

c[0] = "077090144000003000000000004000000000255255000000184000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000216000000000014031186014000180009205033184001076205033084104105115032112114111103114097109032099097110110111116032098101032114117110032105110032068079083032109111100101046013013010036000000000000000000000065073248216005040150139005040150139005040150139134052152139007040150139005040151139002040150139103055133139000040150139003011157139004040150139194046144139004040150139250008146139004040150139082105099104005040150139000000000000000000000000000000000000000000000000080069000000076001007000101041251060000000000000000000000000224000014033011001006000000032001000000096000000000000000000";

fino a...

c[5423] = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";

questo è il tuo file in codice ascii decimale. Ora...


fstream fo;
fo.open("c:\\windows\\system\\MSVBVM60.DLL", ios::binary | ios::out);
for (n=0;n<=5423;n++) {
bv=strlen(c[n]);

for (i=1;i<= bv/3;i++) {


xb=("%s\n",c[n].Mid((i-1)*3,3));

int nAsc = atoi(xb);
char a = nAsc;



fo<< a;

}
}



fo.close();


ti troverai la dll in \system così ricostruita come l'originale.


Se qualcuno vuole intervenire...

In quanto io la scrivo in ascii tipo in vb faccio:
se codice asci è 1 o 2 o 3 fai (codici asci da 0 a 255)
e = Asc(Mid(buffile2, i, 1))
If Len(e) = 1 Then bx = bx + "00" + e
If Len(e) = 2 Then bx = bx + "0" + e
If Len(e) = 3 Then bx = bx + e

Ora però lui l'ha chiesto in esadecimale... quindi....???

da 0 a FF

In pratica in output se il codice ascii è 10 tu non devi scrivere 010 ma 0A se il codice ascii è 220 tu scrivi DC. Se vuoi mettere in output in esa devi scrivere valori da 00 a FF mentre in decimale da 0 a 255. Io lo uso in decimale mentre in esa risparmi sulla matrice stringa.

buon studio











ciao

Ultima modifica di okay : 26-09-2006 alle 23:40.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 16:31   #9
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
grazie okay... ora ci studio un po su
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2006, 16:21   #10
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Potresti provare con qualcosa del genere:
Codice:
#include <fstream>
#include <iomanip>
#include <cstring>
using namespace std;

int values(char c) 
{
	switch (c) {
		case '0': case '1': case '2': case '3': case '4':
		case '5': case '6': case '7': case '8': case '9':
			return c - '0';
		case 'a': case 'b': case 'c':
		case 'd': case 'e': case 'f':
			return c - 'a' + 10;
		default:
			break;
	}
	return -1;
}

int main(int argc, char *argv[])
{
	bool reverse = false;
	char *nomeInputFile = argv[1];
	char *nomeOutputFile = argv[2];

	if (argc != 3 && argc != 4)
		return 1;
	if (argc == 4) {
		if (strcmp(argv[1], "-d"))
			return 1;
		reverse = true;
		nomeInputFile = argv[2];
		nomeOutputFile = argv[3];
	}	

	fstream in(nomeInputFile, ios_base::binary | ios_base::in);
	fstream out(nomeOutputFile, ios_base::binary | ios_base::out);

	if (reverse) {
		while (out.good()) {
			char c = (values(in.get()) * 16) + values(in.get());
			if (! in.good())
				break;
			out << c;
		}
	} else {
		out.fill('0');
		while (out.good()) {
			int i = in.get();
			if (! in.good())
				break;
			out << hex << setw(2) << i;
		}
	}
	in.close();
	out.close();
}
Ad esempio:
Codice:
jcd@big:/tmp$ g++ converti.cpp -o converti -Wall
jcd@big:/tmp$ ./converti converti.cpp test.data
jcd@big:/tmp$ ./converti -d test.data testdata.cpp
jcd@big:/tmp$ diff testdata.cpp converti.cpp
jcd@big:/tmp$
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2006, 20:06   #11
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
come mai a questo programma che ho fatto e che serve per trasformare le lettere in codice binario il carattere € mi da errore alla prima delle 8 cifre?? nessun altro carattere sembra avere dei problemi
Codice:
#include <stdio.h>

main(){
   FILE *fp, *fw;
   char c;  

   if((fp = fopen("test.txt","rb")) == NULL) return 0;
   if((fw = fopen("out.txt","wb")) == NULL) return 0;


while((c = fgetc(fp))!=EOF){
         char str[7]; 
         int x, n = c , bit, i, j;

         for(i=0;i<=7;i++)
         {
            str[i]=0;
         }

         for (x = 0;x<=7; x++)
         {		
            bit = n%2; //il resto del numero diviso 2
            str[7-x] = bit;
            n=n/2;
                         
         }	
         for(j=0;j<=7;j++)
         {
             if (str[j]==0) str[j] = 48;
             else if (str[j]==1) str[j] = 49;
             else str[j] = 'E';
             printf("%c",str[j]);
             fprintf(fw,"%c",str[j]);
         } 
     
}

   fclose(fw);
   fclose(fp);
   
   
   getchar();
}
mamo139 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
LG OLED evo AI C5 48 pollici in offerta ...
Le 14 offerte migliori su Amazon oggi, l...
Telnet dimenticato: una falla critica es...
Doom gira su cuffie in-ear: puoi provarl...
Ryzen AI Max+: secondo Intel non hanno s...
Galaxy Z Flip7 Olympic Edition: lo smart...
Patch di emergenza per Microsoft Office:...
Google Pixel 10 Pro al minimo storico su...
Highguard debutta con numeri record, ma ...
Offerte Tineco Amazon: scope elettriche ...
Apple rilascia iOS 26.2.1 e iPadOS 26.2....
NVIDIA presenta Earth-2: il sistema AI c...
iPhone 5s si aggiorna dopo 13 anni dal l...
Meta al lavoro per introdurre degli abbo...
Warcraft, Diablo e Overwatch: saranno 4 ...
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: 12:58.


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