Konvertierung von Byte in ASCII in C
Kann jeder jeden schlagen bedeutet der Konvertierung eines byte Arrays nach ASCII in C? Oder das umwandeln byte-array in hex und ASCII?
[04/02][Bearbeitet]: umformulieren, ich möchte konvertieren von Byte in hex und speichern die umgewandelten hex-Werte in einer Datenstruktur. Wie sollte es gehen?
Grüße,
darkie
Eine ASCII-codierte string ist ein byte-array, so dass deine Frage macht nicht viel Sinn.
Ich dachte, ein byte-array /war/ ein ASCII-string, in C. können Sie Beispiele für die Eingabe und Ausgabe, die Sie wollen?
Nitpicky: string ist ein byte array und ein ByteArray kann werden als string interpretiert.
fügen Sie einfach 0 in das array und schon hast du die Zeichenfolge
Ihr Fehler ist rekursiv.
Ich dachte, ein byte-array /war/ ein ASCII-string, in C. können Sie Beispiele für die Eingabe und Ausgabe, die Sie wollen?
Nitpicky: string ist ein byte array und ein ByteArray kann werden als string interpretiert.
fügen Sie einfach 0 in das array und schon hast du die Zeichenfolge
Ihr Fehler ist rekursiv.
InformationsquelleAutor name_masked | 2010-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst sollte man etwas mehr Sorgfalt auf die Formulierung Ihrer Fragen. Es ist schwer zu sagen, was Sie wirklich hören wollen. Ich glaube, Sie haben einige binary blob und wollen es in einer für Menschen lesbaren form, z.B. dump es auf dem Bildschirm für die Fehlersuche. (Ich weiß ich bin wahrscheinlich falsch Sie hier).
Können Sie
snprintf(buf, sizeof(buf), "%.2x", byte_array[i])
zum Beispiel, um zu konvertieren ein einzelnes byte in der hexadezimalen ASCII-Darstellung. Hier ist eine Funktion, die zu dump eine ganze memory-region auf dem Bildschirm:InformationsquelleAutor quinmars
Gut, wenn Sie interpretieren, die eine ganze Zahl als
char
in C, erhalten Sie, dass ASCII-Zeichen, solange es in Reichweite ist.Drucke:
Beachten Sie, dass keine Fehlerprüfung vorgenommen - ich nehme an
0 <= i < 128
(ASCII-Bereich).Andernfalls ein array von byte-Werten werden direkt als ASCII-string:
Drucke:
Hinweis auf das Letzte byte: 0, es ist erforderlich beenden Sie die Zeichenfolge ordnungsgemäß. Sie können
bytes
wie jede andere C-string, kopieren es, fügen es die anderen Saiten Durchlaufen, drucken, etc.0 <= i < 128
oder (32 <= i < 128
für druckbare Zeichen). Wenn Sie die Konvertierung einer Ganzzahl in ein Zeichen, die ganze Zahl abgeschnitten wird, um die 8 LSBs (least significant bits). Nur diejenigen werden in das Sortiment. E. g.i = 1121
gibt das gleiche Ergebnis wiei = 97
(1121 = 1024 + 97
)stimmt, aber dann es macht nicht viel Sinn, da man die modulo-256
int
, was unwahrscheinlich ist, werden der Wunsch der Programmierer.Nitpick:
'a'
werden können oder nicht, 97 C. Auf den meisten Computern ist es heute, aber der C-standard garantiert nicht. Um dies zu tun portabel, hat man ein lookup-Tabelle. Natürlich'a' == 97
gilt für die meisten Systeme heute.Hi, ich meinte, wie kann ich konvertieren von Byte in ASCII und speichern dieser Werte, vielleicht in ein array?
Ich verstehe nicht, was du damit meinst. Pflege zu erarbeiten (oder vielleicht aktualisieren Sie die Frage mit einem Beispiel)??
InformationsquelleAutor Eli Bendersky
Char.s und Int.s sind gespeichert in binäre C. Und kann allgemein verwendet werden, in die Stelle jedes anderen beim arbeiten in der ASCII-Bereich.
sollte print 'a' auf dem Bildschirm.
Eigentlich Nein, habe ich nicht, weil, das ist falsch, Sie sind es nicht. Sie sind in der Regel von unterschiedlicher Größe (byte vs. word) aber Sie können in der Behandlung von Zeichen, als wären Sie ganze zahlen und Umgekehrt.
InformationsquelleAutor zellio