Ich glaube in dem Fall waere einDer Datentyp char ist eine 16Bit Zahl. Vielleicht hilft das, um die Aufgabe einfach zu lösen.
byte
besser, weil dann kann man sich damit einen String
mit der richtigen Enkodierung fuer die Ausgabe erstellen...oder ich denke gerade zu kompliziert. Ueberhaupt klingt die Aufgabe eigentlich nach Hoelle, weil ich habe gerade die Regeln fuer System.out
und andere Zeichensaetze gar nicht im Kopf.Die ersten 128 bin ich der Meinung, was meiner Meinung nach die ganzen Fragen aufwirft. Hier ist das Codepage Layout fuer UTF-8 von 0x00 bis 0xff....und das enthält die ersten 256 Unicode Zeichen. Oder habe ich das gerade falsch im Kopf?
Stimmt, Codepoint/Ein byte wäre kontraproduktiv, da Java ja signed wäre und ein Unsigned byte benötigt würde (0...255 statt -128...127)
int
waere das Ding der Wahl.Nein, stimmt ja gar nicht, ist ja kein UTF-8/16/32 im rohen Zustand.Stimmt, Codepoint/int
waere das Ding der Wahl.
Das wäre dann aber doch ASCII oder so aber nicht ISO-8859-1. Bei der ISO-8859-x hat man 256 Zeichen wie man z.B. hier findet:Die ersten 128 bin ich der Meinung
UTF-8 ist aber hier uninteressant, da wir ja mit den 16 Bit auf UTF-16 sind. Und da wir nur bis 255 gehen, haben wir den Bereich, der 32Bittig wird, nicht mit drin. Sprich: Wir gehen ja nur von 0x0020 (32) bis 0x00FF (255). Und die Zeichen, die noch einmal 16 Bit benötigen sind im oberen Bereich wie 0xD8__Hier ist das Codepage Layout fuer UTF-8 von 0x00 bis 0xff.
Wenn wir char (Bzw. Wrapper Klasse Character) betrachten, dann ist es sehr wohl UTF-16. So interpretiere ich zumindestNein, stimmt ja gar nicht, ist ja kein UTF-8/16 im rohen Zustand.
The char data type (and therefore the value that a Character object encapsulates) are based on the original Unicode specification, which defined characters as fixed-width 16-bit entities. The Unicode Standard has since been changed to allow for characters whose representation requires more than 16 bits. The range of legal code points is now U+0000 to U+10FFFF, known as Unicode scalar value. (Refer to the definition of the U+n notation in the Unicode Standard.)
The set of characters from U+0000 to U+FFFF is sometimes referred to as the Basic Multilingual Plane (BMP). Characters whose code points are greater than U+FFFF are called supplementary characters. The Java platform uses the UTF-16 representation in char arrays and in the String and StringBuffer classes. In this representation, supplementary characters are represented as a pair of char values, the first from the high-surrogates range, (\uD800-\uDBFF), the second from the low-surrogates range (\uDC00-\uDFFF).
Da bin ich falsch abgebogen, ja, is richtig.UTF-8 ist aber hier uninteressant, da wir ja mit den 16 Bit auf UTF-16 sind. Und da wir nur bis 255 gehen, haben wir den Bereich, der 32Bittig wird, nicht mit drin. Sprich: Wir gehen ja nur von 0x0020 (32) bis 0x00FF (255). Und die Zeichen, die noch einmal 16 Bit benötigen sind im oberen Bereich wie 0xD8__
https://de.wikipedia.org/wiki/UTF-16 hat da z.B. das Violinzeichen als 0xD834 DD1E
Nein, ich meinte meineWenn wir char (Bzw. Wrapper Klasse Character) betrachten, dann ist es sehr wohl UTF-16. So interpretiere ich zumindest
int
Idee.i+". "+charakterAtIndex(i)+" "
if(i%8==0){
System.out.println();
}
In der Aufgabe steht, dass alle Zeichen direkt untereinander ausgegeben werden sollen - das ist also so nicht einmal notwendig.und nach jedem 8. oder so String eben noch einen Zeilenumbruch machen
for (char ch = 32; ch < 256; ch++) {
System.out.println(((int) ch) + ". " + ch);
}
for (char ch = 32; ch < 256; ch++) {
int nr = ch;
System.out.println(nr + ". " + ch);
}
for (int nr = 32; nr < 256; nr++) {
char ch = (char) nr;
System.out.println(nr + ". " + ch);
}