Windows.txt als HEX in TextView ausgeben ?

eisbaer1976

Neues Mitglied
Thread Starter
Dabei seit
27.12.2008
Beiträge
10
Reaktionspunkte
0
Hi,

ich bin Anfänger (Umsteiger von VB.Net). Ich möchte eine Windows.txt in C einlesen und in einem Textview ausgeben. Mein Problem ist das die Datei vermutlich in ANSI ist und auch so ausgegeben wird. Wenn ich die Datei einfach als HEX werte im Textview ausgeben könnte wäre ich sehr froh.

Kann mir jemand von euch einen Link empfehlen, oder mir sagen in welcher Richtung ich meine Programmierkenntnisse in C vertiefen soll, um dieses Problem
zu lösen ?

Gruß
 
sprintf ... Tip: %x

EDIT: Oder in Cocoa, NSString stringWithFormat:

Alex
 
Danke für Deinen Tip, aber irgendwie habe ich ganz böse Umstiegsprobleme.

Schau mal, habe das probiert:

@implementation HexController
- (IBAction)pushStart:(id)sender {

NSString* name;
name = [eingabe stringValue];//eingabe Textfield 1
NSString * hexString = [NSString stringWithFormat:mad:"%x", name];
[ausgabe setStringValue:hexString];//ausgabe Tetfield 2

}
@end

Das ist evtl. schon die Richtung, aber da stimmt etwas noch nicht.
Wenn ich zum Beispiel ein "z" eingebe kommt "15f4d0" dabei raus.

Hast Du, oder jemand anderes noch ein Tip ? ;-)

Björn
 
Also, %x stellt ein BYTE in hex dar. EINS. NSString ist ein Pointer.

Du musst also den NSString erst ein Bytes umwandeln. (hint: dataByUsingEncoding oder so), und dann jedes EINZELNE Byte mit %x darstellen

Wenn ich mehr Tipps gebe, kann ich es auch selber schreiben.

Alex
 
Ok, 1024 und so...

Leider habe ich als Umsteiger doch große Probleme mit den Datentypen. In VB konnte ich einfach die Strikte Konvertierung abschalten und so wenigstens die Datentypen übergeben. Im Internet und in der Hilfe habe ich viele Tips gesehen, aber da überall etwas anderes steht bin ich etwas verwirrt und auch etwas traurig. Das man sich so einen abbrechen muss, nur um ein paar Zahlen in Hex zu bekommen ?

Ich muss mich wohl damit abfinden und erst noch ein paar Stunden weiter lernen.
Man kommt sich schon recht blöd vor, wenn man in VB unter anderem ein Warenwirtschaftssytem programmiert hat und dann so Probleme hat, peinlich.

Danke Dir trotzdem für Deine Tips, ein klein wenig haben sie ja geholfen, der Rest liegt an mir.
 
Naja, ich glaube einfach, VB hat Dich da verdorben.

Ich kenne VB nicht, schreib doch mal auf, wie Du es da machen würdest

Alex
 
So:

Public Function Decimal2Hex(ByVal Zahl As Integer) As String
Return Zahl.ToString("X")
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

MessageBox.Show("Dec2Hex: " + Me.Decimal2Hex(15).ToString)

End Sub
 
Oh, ho. Nein, das geht in Objective-C (oder C++) doch schon ganz anders...

Alex
 
Genau deshalb ist es ja so schwierig für mich. Für mich ist es halt schwer zu verstehen, wenn es in VB so einfach ist. Ich möchte aber gerne aufm MAC programmieren, warum ist ja jedem klar. (lässt sich besser damit arbeiten)

Es scheint aber doch viele Leser zu geben die sich auch dafür interessieren xD.

Zumindest bin ich halt jetzt aufgeschmissen und ich fürchte wenn ich so etwas einfaches nicht kann, dann werde ich bei allen Konvertierungen und Datentypen Probleme haben.

Björn
 
Leider habe ich als Umsteiger doch große Probleme mit den Datentypen. In VB konnte ich einfach die Strikte Konvertierung abschalten und so wenigstens die Datentypen übergeben.

Zumindest bin ich halt jetzt aufgeschmissen und ich fürchte wenn ich so etwas einfaches nicht kann, dann werde ich bei allen Konvertierungen und Datentypen Probleme haben.
Dein Hauptproblem ist zu erkennen, dass das Problem nichts mit dem Konvertieren von irgendwelchen Datentypen zu tun hat.

Das Problem besteht nämlich darin, dass es bei Cocoa keine einfache Methode gibt, um einen String in Hexdarstellung zu formatieren. Das heißt, du musst das zu Fuß machen. Das ist zugegebenermaßen nicht ganz einfach, da Cocoa oft ziemlich umständlich ist. Die naivste Herangehensweise wäre da wohl den String in einen C-String zu verwandeln und eine Schleife zu verwenden mit der du jedes Zeichen einzeln umwandelst.

Übrigens passt dein VBA-Code nicht zu deiner Problembeschreibung. Da wandelst du eine Zahl in einen Hex-String um und keinen String einem Hex-String.
 
Zuletzt bearbeitet:
So, habe mir noch mal Gedanken gemacht :

Data Encoding = muss ich mehr lernen !
Buchstaben in Hex ausgeben = wäre schön muss aber nicht !
Mit Bit und Byte = wäre auch schön !

Aber mal ganz langsam, wenn ich ja eine Windows.txt habe und dort die Werte als Zahlencode stehen, dann langt es mir ja vorerst. Ich kann ja bis 255 mit meinem kleinen Prog unten in Hex umwandeln. Ich müsste dann ja nur die eingelesenen Zahlenwerte aufspalten (Schleife) und sie dann so :

NSString stringWithFormat:mad:"#%@%@%@", HexValue1, HexValue2, HexValueUSW;

ausgeben, oder ?

kleines Prog:

- (IBAction)pushStart:(id)sender {

int decstring = 0xe;
decstring = [eingabe intValue];//eingabe Textfield 1
NSString * hexString = [NSString stringWithFormat:mad:"%x", decstring];
[ausgabe setStringValue:hexString];//ausgabe Tetfield 2

}

Einige Antworten haben mich inspiriert...

Björn
 
Ich müsste dann ja nur die eingelesenen Zahlenwerte aufspalten (Schleife) und sie dann so :

NSString stringWithFormat:mad:"#%@%@%@", HexValue1, HexValue2, HexValueUSW;

ausgeben, oder ?
Nur dann, wenn HexValue ein String ist mit dem Wert "b4", zum Beispiel

- (IBAction)pushStart:(id)sender {

int decstring = 0xe;
decstring = [eingabe intValue];//eingabe Textfield 1
NSString * hexString = [NSString stringWithFormat:mad:"%x", decstring];
[ausgabe setStringValue:hexString];//ausgabe Tetfield 2

}

Auch das geht nur, wenn Du Zahlenwert eingibst. Hast Du das Beispiel ausprobiert, bevor Du es hier gepostet hast?

Ein "a" hat die IntValue "0". Die Wird dann auch Ausgegeben, nicht etwa (hex) 41.

Alex
 
Zurück
Oben Unten