Christian Kruse: Typkonvertierung in C bzw. Perl

Beitrag lesen

problematische Seite

Hallo pl,

Wenn ich meinen Quellcode in ISO-8859-1 speichere

Logisch, dann kriegst Du eine andere Bytesequenz!

Ich zitiere dich aus dem Posting direkt davor:

Wenn Du bei der Bytesemantic bleibst, spielt die Zeichenkodierung überhaupt keine Rolle.

Diese Aussage ist offensichtlich falsch.

char e = "€"; // Quelldatei UTF-8 kodiert

was schon der Kompiler nicht durchgehen lässt. Siehe Artikel

Ja, aber die Begründung ist falsch. char c = "a" wird auch vom Compiler bemängelt. Der Grund ist nicht, dass "€" bei UTF-8-Kodierung mehrere Bytes benötigt, sondern dass Doublequotes einen Pointer auf einen C-String erzeugen. Was du meinst ist char e = '€' - hier ist deine Begründung richtig.

Und nochwas: uint8_t *binary - don't do that. C gibt dir nur diese eine Garantie: signed charshort intintlong intlong long int. Es ist nicht garantiert, dass uint8_t == unsigned char. Praktisch ist es heutzutage überall der Fall, aber es muss nicht so sein. Die Datentypen existieren aus einem Grund. Wenn du char meinst, benutze auch char.

LG,
CK

0 43

Typkonvertierung in C bzw. Perl

  1. 0
    1. 0
      1. 0
        1. 0
          1. 0
  2. 0
    1. 0
  3. 0
  4. 0
    1. 0
      1. 0
      2. 0
        1. 0
          1. 0
          2. 0

            Über den Umgang mit Binaries in C und in Perl

            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
                      1. 0
                        1. 2
                          1. 0
                            1. 0

                              Soso.

                              1. 0
                                1. 1
                                  1. 0
                                    1. 0
                                    2. 0
                                2. 0
                                3. 1
                2. 0
                  1. 0
          3. 0
            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
                      1. 0
                        1. 0
                  2. 1