/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
byte ind i array for convertering til ch~
Fra : glenn007
Vist : 534 gange
200 point
Dato : 07-12-02 15:48

Er der en der har et godt eksemple på hvorledes man kan hente en Byte ind i et array som derefter convertere disse Byte til noget læseligt såsom en char

jeg jeg henter for tiden en Byte fra en comport med en readfile funktion, hvorefter denne byte derefter smides i en buffer. Det som ( når det en dag lykkes ) er menningen er at den skal udskirve de char`s som readfile henter ( som 8 bit bytes ) på skærmen.

Jeg har været på msn`s og kigge men deres kode stumper og eksempler forvirre mig mere end de gavner så jeg håber lidt på et eksempel med et par gode komentarer til


mvh
balle

 
 
Kommentar
Fra : Nyhedsbruger


Dato : 07-12-02 15:44

> Er der en der har et godt eksemple på hvorledes man kan hente en Byte
> ind i et array som derefter convertere disse Byte til noget læseligt
> såsom en char

Hmm.. Er en byte og en char ikke det samme?



Kommentar
Fra : Nyhedsbruger


Dato : 08-12-02 01:52



glenn007 wrote:

> Er der en der har et godt eksemple på hvorledes man kan hente en Byte
> ind i et array som derefter convertere disse Byte til noget læseligt
> såsom en char
>
> jeg jeg henter for tiden en Byte fra en comport med en readfile
> funktion, hvorefter denne byte derefter smides i en buffer. Det som (
> når det en dag lykkes ) er menningen er at den skal udskirve de char`s
> som readfile henter ( som 8 bit bytes ) på skærmen.
>
> Jeg har været på msn`s og kigge men deres kode stumper og eksempler
> forvirre mig mere end de gavner så jeg håber lidt på et eksempel med et
> par gode komentarer til
>
Det komme an på om det du læser er ascii text eller rå data. I det først

tilfælde kan du bruge:


char buf[1024];
dword num_read, i;
ReadFile(handle, buf, 1024, &num_read, NULL);
for(i = 0; i < num_read; i++)
putc(buf[i], stdout);

Hvis du læser rå data kan du gøre sådan her:

unsigned char buf[1024];
dword num_read, i;
ReadFile(handle, buf, 1024, &num_read, NULL);
for(i = 0; i < num_read; i++)
printf("0x%02X ", buf[i]);


dvs. udskrive som hex (0x01 0xBA).

HTH
/bertel



Kommentar
Fra : glenn007


Dato : 07-12-02 22:08

hmm får godt nok et output der ligner noget der kan bruges....men hvis man nu vil ignorer 0x00 ( spaces ) hvad skal man så gøre ? nogle forslag






Accepteret svar
Fra : pmbruun

Modtaget 200 point
Dato : 09-12-02 10:06

Der er en tvetydighed i dit spørgsmål, som viser sig i de to forskellige kommentarer, du har fået.

Kommentar 1 er rigtig, hvis du ønsker, at udskrive de tegn, som de læste byte-koder svarer til, mens kommentar 2 er rigtig, hvis du ønsker at udskrive talkoderne for de modtagne tegn, f.eks. som hexadecimale koder.

Din egen efterfølgende kommentar er nok en misforståelse, da 0x00 ikke betyder space i de gængse tegntabeller. Det er normalt 0x20, som er space. Se f.eks. http://www.asciitable.com/

Jeg aner ikke hvordan din readfile er defineret, så det må du selv tilrette, men her er nogle muligheder for at udskrive din byte:

byte b;
b = readfile(f);
printf("%i",b); // Decimalt output
printf("0x%02X ", b); // Hexadecimalt output
printf("%c", b); // Output som det tegn, der har koden b

Ved output som tegn, skal du være opmærksom på, at en del koder har kontrolvirkning, så de ikke bare udskrives, men f.eks. siger "ding" i højttaleren, spoler et tegn eller en linie baglæns, eller bare ikke skriver nogetsomhelst. Se tegnkodetabellen refereret ovenfor.

Bemærk, at printf ikke skifter linie af sig selv. For at få linieskift skal du udskrive tegnet "\n". Hvis du vil have eet tegn på hver linie, så skriver du:

printf("%c\n", b); // Output som det tegn, der har koden b og skift linie.

Nå, men det er jo slet ikke sikkert, at det er printf, du skal bruge - det er kun til at skrive ting ud på en konsol. Hvis du skal skrive teksten i et felt i et vindue, du har designet, skal du først opbygge en passende strengrepræsentation af den tekst, der skal skrives. I så fald skal du igen passe gevaldigt på kontroltegnene. Det kan være en god ide at bruge sprintf, til at skrive ind i en char[] buffer, eller bedre brug en stringbuffer i C++ til at opsamle teksten du vil skrive.

Med venlig hilsen

Peter M. Bruun


Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407849
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste