Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Chenda

Routinier

Dabei seit: 03.02.2008

Beiträge: 334

 

1 Zum Seitenanfang

Mittwoch, 8. Juli 2009, 12:20

Wie kann ich einen Ascii Charakter in seinen binären Code zerlegen?

Hallo zusammen,

ich habe wieder ein C/C++ Prgrammierproblem.
Ich habe das nun folgendermaßen versucht:

C/C++-Quelltext

1
2
3
4
5
6
7
8
9
char sResult[254];
readfunktion(source,sResult);
printf("sResult = %s\n", sResult);
int status1=int(sResult[3]);
int status2=int(sResult[8]);
printf("Status1 = ");
for(int y=7;y>=0;y--)printf("%d",(status1&(1<<y))?1:0);printf("\n");
printf("Status2 = ");
for(int y=7;y>=0;y--)printf("%d",(status2&(1<<y))?1:0);printf("\n");


Diese Methode hat folgende Schwachstelle:
1. muss sich das zu zerlegende Zeichen immer an der/den selben Stellen im Array befinden (hier das 4. und 9. Element).
2. kann ich mit dem Code nun nicht weiterarbeiten.

Die Ausgabe sieht dabei folgendermaßen aus:
sResult = 1MS`,2MS@
Status1 = 01100000
Status2 = 01000000

Ich würde gerne noch diesen binären Code genauer anschauen und zwar in folgender Weise:
Ich möchte jede Ziffer darauf untersuchen ob sie 0 oder 1 ist und je nachdem was zutrifft weitermachen.
Hat da jemand eine Idee wie ich die beiden Schwachstellen bei meiner Lösung umgehen kann?

--------------------------------------------

C/C++-Quelltext

1
2
3
4
//alt und gelöst: aus char array zwei float Zahlen auslesen
char sResult[254];
//fill sResult
printf("sResult = %s\n",sResult);


sResult enthält folgendes:
1TP0.0000\n2TP0.0000
Das "\n" ist ein Zeilenumbruch.

Bei dem füllen des Arrays ist immer ein 1TP gefolgt von einer Kommazahl. Danach ein Zeilenumbruch und 2TP gefolgt von einer Kommazahl. Die Formatierung ist auch immer gleich (siehe Bsp.)
Ich möchte nun die beiden Kommazahlen in unterschiedlichen Variablen speichern. Wie mache ich das?

Das Problem ist folgendermaßen gelöst:

C/C++-Quelltext

1
2
double pos1,pos2;
sscanf(sResult,"1TP%lf\n2TP%lf",&pos1,&pos2);
danke fürs Lesen
Alludo Animali

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chenda« (8. Juli 2009, 12:20)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

2 Zum Seitenanfang

Mittwoch, 8. Juli 2009, 12:49

Für das erste Bit(Von rechts)


(c&1b == c) das ist das erste bit 1, sonst ist das erste bit 0.


für das 2. kannste nehmen

(c&(1b<<1) == c) dann ist das zweite bit 1, sonsts 0.

für das 3.
(c&(1b<<2) == c) ... usw.

lg

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »nocturne« (8. Juli 2009, 12:49)

 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

3 Zum Seitenanfang

Donnerstag, 23. Juli 2009, 01:02

ist die frage schon beantwortet?

also die frage war ja:

Zitat

Wie kann ich einen Ascii Charakter in seinen binären Code zerlegen?
aber deine Codezeile Nr7 enthält meiner Meinung nach schon alles was dazu notwendig ist:
* for-schleife um den char zu durchmustern
* shift-operator um sich das einzelne bit rauszupicken
* und ne verkürzte If-verzweigung um je nach ergebnis eine 1 oder 0 auszugeben

C/C++-Quelltext

7
for(int y=7;y>=0;y--)printf("%d",(status1&(1<<y))?1:0);printf("\n");


dann schreibst du noch:

Zitat

Ich möchte jede Ziffer darauf untersuchen ob sie 0 oder 1 ist und je nachdem was zutrifft weitermachen.
doch das wird in codezeile Nr7 ja schon gemacht.

Desshalb meine Frage: ist der Beitrag schon beantwortet? oder Wo genau liegt das Problem?
Vielleicht isses auch nur zu spät und ich übersehe was :(

gruß
Ego