Codepage 437 char to decimal

29/08/2008 - 09:32 von Bernhard Geist | Report spam
hallo!

ich stehe im moment vor einem problem. muss checksummen berechnen.

soweit alles klar, nur die checksumme beruht auf dem dezimalen Wert der
übertragenen Zeichen und diese sind Codepage 437 (extended ASCII).

wenn ich jetzt zb. für 'à' int asciiCode = (int)'à'; aufrufe, bekomm ich
228 als dez. Wert.

dieser sollte jedoch lt. CP437 nicht 228, sondern 132 sein.


hab ihr ne idee, wie ich die dez.Werte mit zugrundeliegender CP437 bekomme?

bitte um eure hilfe.

herzlichen dank u. schöne grüße
bernhard
 

Lesen sie die antworten

#1 Christoph Schneegans
29/08/2008 - 15:07 | Warnen spam
Bernhard Geist schrieb:

(Keine Ahnung, warum mein Posting beim ersten Versuch in UTF-7
rausging. Das allein wàre ja noch nicht so schlimm gewesen, aber OE
hat dann auch den "References"-Header UTF-7-codiert, was natürlich
völliger Unsinn ist.)

soweit alles klar, nur die checksumme beruht auf dem dezimalen Wert
der übertragenen Zeichen und diese sind Codepage 437 (extended
ASCII).



"Zeichen" in .NET sind _immer_ Unicode-Zeichen.

wenn ich jetzt zb. für 'à' int asciiCode = (int)'à'; aufrufe, bekomm
ich 228 als dez. Wert.



'à' ist in Unicode U+00E4, also dezimal 228. Paßt.

dieser sollte jedoch lt. CP437 nicht 228, sondern 132 sein.



System.Text.Encoding cp437 = System.Text.Encoding.GetEncoding(437);
Console.WriteLine(cp437.GetBytes("à")[0]);

Das würde man natürlich nicht für jedes einzelne Zeichen tun. Etwa mit

MemoryStream mstr = new MemoryStream();
StreamWriter sw = new StreamWriter(mstr, cp437);

erstellst du einen StreamWriter, in den du Unicode-Zeichen schreiben
kannst, die dann mit CP437 codiert werden.

<http://schneegans.de/expression-web...erung/> · Unicode in xWeb

Ähnliche fragen