ASCII Problem
-
Hallo.
ich habe mir ein array vom typen char mit 256 elementen angelegt, wo ich meine komplette ASCII Tabelle speichern will.
char lookup_ascii8to7[256]; for ( int i = 0; i < 256; i++ ) lookup_ascii8to7[i] = char(i);
so, die 128 Zeichen macht er auch schön brav und danach ist feierabend.
wie kann ich denn diese grenze umgehen?
-
unsigned char
-
Datentype: char
Wertebereich: 1 Zeichen
Speichergröße: 1 ByteDatentype: char
Wertebereich: -128...127
Speichergröße: 1 ByteDatentype: unsigned char
Wertebereich: 0...255
Speichergröße: 1 ByteDeshalb musst du unsigned char benutzen
Aber wenn ich recht überlege wird der String doch noch Null Terminiert. Deshalb doch 255 - 1 (=254) oder liege ich da grade falsch?
-
D4rk schrieb:
Aber wenn ich recht überlege wird der String doch noch Null Terminiert.
welcher string?
-
char lookup_ascii8to7[256];
Zu einem char Array sag ich manchmal String einfach weil es im Endeffekt einer ist. Ich meine ein C char Array gibst du auch mit printf("%s", namedesarrays); aus und das s von %s steht meines wissens für String.
-
MSS-Software schrieb:
lookup_ascii8to7[i] = [b]char(i)[/b];
Das ist ein C++-Cast und in C nicht erlaubt.
@_D4rk_: Ein char-array ist nicht automatisch ein String.
-
Ein String wird in C vielleicht als Nullterminiertes char-Array verwaltet, aber deswegen ist noch lange nicht jedes char-Array ein "String"
(und die Zeichentabelle, die der OP anlegen will, wird höchstwahrscheinlich NICHT als String verwendet)
PS: signed char hat einen Wertebereich von (mindestens) -128..127, unsigned char von 0..255 - char ist ein eigenständiger Typ und hat je nach Systempräferenzen entweder den Wertebereich von signed char oder unsigned char.
@MSS: Was ist eigentlich der Sinn dieses Arrays, wenn du in jedem Element seinen eigenen Index unterbringen willst?
-
CStoll schrieb:
PS: signed char hat einen Wertebereich von (mindestens) -128..127
-127... 127
-
Tim schrieb:
CStoll schrieb:
PS: signed char hat einen Wertebereich von (mindestens) -128..127
-127... 127
-127... 127 ???
CStoll hat Recht!
-
ohaoha schrieb:
Tim schrieb:
CStoll schrieb:
PS: signed char hat einen Wertebereich von (mindestens) -128..127
-127... 127
-127... 127 ???
CStoll hat Recht!
Nein, hat er nicht.
-
einschliesslich 0 bis 127 sind 128
-1 bis -128 sind auch 128 zusammen 256erklaer mir mal, wie Du auf -127... 127 (sind zusammen inklusive 0 = 255)
-
ohaoha schrieb:
erklaer mir mal, wie Du auf -127... 127 (sind zusammen inklusive 0 = 255)
So steht es im Standard. Es gibt halt auch andere Zahlendarstellungen als das Zweierkomplement
z.B. Sign+Magnitude: +0 bis +127 und -0 bis -127
-
Ganz einfach beide haben recht (_D4rk_ und CStoll)
Auch wenn es in fast allen Büchern falsch beschrieben ist:
0 bis 127
und
-127 bis -1und nur 128 sind es, weil (8 Bit) - (1 Bit) für das Vorzeichen (-=1 und +=0)
2E7 sind und 2E7 = 128------------------------------------------------------------------------------------------------------------------------------------------------------------