Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 21:50 Der er 20 kommentarer og
1 løsning

Konvertering fra BYTE til streng?

Hejsa!

I et program kaldes en funktion GamePrintInfo();  - som kan bruges til at lave et output på skærmen i et spil, fx:

GamePrintInfo("Hello!");

Men problemet er at jeg gerne vil have den til at skrive en tekst + en BYTE værdi. S¨ledes:

BYTE ItemID[5]={0x17,0,0,0,0};
GamePrintInfo("Nummeret er:" & ItemID );

Så den fx outputter på skærmen: Nummeret er: 170365a4f5

Hvordan gøres dette? ... R ikke så kendt i C++

Takkker!
Avatar billede arne_v Ekspert
16. januar 2004 - 21:55 #1
Jeg er ikke helt sikker på hvad du vil, men måske noget a la:

char buf[100];
sprintf(buf,"Nummeret er: %2X",(int)ItemID[0]);
GamePrintInfo(buf);

eller:

char buf[100];
sprintf(buf,"Nummeret er: %8X",*((int *)ItemID));
GamePrintInfo(buf);
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:02 #2
Virker, men det skriver kun 1 nummer, altså 17 ..

Skal jeg bare sætte [0] [5]?
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:02 #3
10x?
Avatar billede arne_v Ekspert
16. januar 2004 - 22:05 #4
Hvad med mit andet forslag ?
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:05 #5
prøver lige
Avatar billede arne_v Ekspert
16. januar 2004 - 22:06 #6
Ellers:

char buf[100];
sprintf(buf,"Nummeret er: %2X%2X%2X%2X%2X",(int)ItemID[0],(int)ItemID[1],(int)ItemID[2],(int)ItemID[3],(int)ItemID[4]);
GamePrintInfo(buf);
Avatar billede arne_v Ekspert
16. januar 2004 - 22:07 #7
Hvis du skal have alle 5 bytes ud så skal det nok være det sidste.
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:08 #8
Hmm ved den første skriver den:

Nr er : 17

2'eren:

Nr. er: BB0DBB17

Der skulle gerne stå 17022f4c44
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:11 #9
Det virker! .. Hmm kan man konvertere det il små nogstaber således at BB bliver til bb?
Avatar billede arne_v Ekspert
16. januar 2004 - 22:11 #10
Prøv det tredie forslag.

Jeg kan iøvrigt ikke helt forstå de sidste cifre.
Avatar billede arne_v Ekspert
16. januar 2004 - 22:12 #11
%2x i stedet for %2X
Avatar billede arne_v Ekspert
16. januar 2004 - 22:12 #12
Og et svar
Avatar billede arne_v Ekspert
16. januar 2004 - 22:12 #13
lille x => små bogstaver
stort X => store bogstaver
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:14 #14
Takker mange gange! Hmm kan du eventuelt forklare hvad:

sprintf, gør?
Hvorfor du skriver: %2X%2X%2X%2X%2X ?
Avatar billede arne_v Ekspert
16. januar 2004 - 22:15 #15
sprintf skriver til en streng
%2x skriver to hexdecimale cifre
5 bytes = 5 argumenter = 5 gange %2x
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:17 #16
Og forresten ^^ Hvordan laver jeg mellemrum mellem bytene? så den skriver: Nummer: xx xx xx xx xx
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:20 #17
Har fundet ud af det! Takker!
Avatar billede arne_v Ekspert
16. januar 2004 - 22:26 #18
Ja - man laver bare et mellemrum mellem %2x'erne - printf er ikke så svær
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:27 #19
Hmm fandt lige et problem .... hvis en af bytene er: 0d

Skriver den kun: d i gamet ....


Kan der gøres noget ved det?
Avatar billede arne_v Ekspert
16. januar 2004 - 22:31 #20
%2x skriver ikke foranstillede nuller

men det gør %02x

(tallet 0 ikke bogstavet O)
Avatar billede cablenet.dk Nybegynder
16. januar 2004 - 22:39 #21
Nice! ;P takker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester