Unicode Char Array

Für Fragen von Einsteigern und Programmieranfängern...
Atze
Beiträge: 10
Registriert: So 30. Apr 2023, 19:22

Unicode Char Array

Beitrag von Atze »

Ich möchte ein Verschlüsselungsprogramm schreiben, das ich mal in MatLab geschrieben habe.

Dazu benötige ich ein Char Array in Unicode. Geht das in Pascal? Kann man dieses dann in ein 16bit Integer Array umwandeln? Dazu habe ich noch nichts gefunden. Das numerische Array will ich dann mathematisch verschlüsseln. Kann man dann das 16bit Integer Array wieder umwandeln in ein Unicode array? In MatLab geht das einfach... Dann kriegt man chinesische Schriftzeichen raus...
Wäre doch nett, wenn das auch in Pascal möglich wäre. Aber ich befürchte, dass Pascal das nicht mitmacht.

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 255
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: Unicode Char Array

Beitrag von h-elsner »

Pascal macht das lässig mit, aber ob der Troll das kann, weiß ich nicht.

Mathias
Beiträge: 6120
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Unicode Char Array

Beitrag von Mathias »

Aber ich befürchte, dass Pascal das nicht mitmacht.
FPC macht mit fas allem mit.
Suche mal nach UTF16 oder Widestring.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10446
Registriert: Mo 11. Sep 2006, 19:01

Re: Unicode Char Array

Beitrag von theo »

Wenn man das so machen will, bräuchte es für den ganzen Bereich eigentlich 32 Bit -> UCS4
https://www.freepascal.org/docs-html/rt ... 4char.html

Atze
Beiträge: 10
Registriert: So 30. Apr 2023, 19:22

Re: Unicode Char Array

Beitrag von Atze »

Unicode hat nur 16 Bit. Da wären doch 32 Bit Verschwendung....?

Benutzeravatar
theo
Beiträge: 10446
Registriert: Mo 11. Sep 2006, 19:01

Re: Unicode Char Array

Beitrag von theo »

Atze hat geschrieben:
Di 9. Mai 2023, 17:51
Unicode hat nur 16 Bit. Da wären doch 32 Bit Verschwendung....?
Nein.
https://de.wikipedia.org/wiki/UTF-32

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 164
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Unicode Char Array

Beitrag von Jorg3000 »

Einer Verschlüsselungs-Routine sollte es eigentlich egal sein, welcher Art die Daten sind, die verschlüsselt werden, also egal ob Text oder Grafikdaten oder ähnliches.
Und dann kann man einfach einen UTF-8 String verschlüsseln und braucht sich nicht um UTF-16 oder UTF-32 zu kümmern.

Warf
Beiträge: 1904
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Unicode Char Array

Beitrag von Warf »

Atze hat geschrieben:
Di 9. Mai 2023, 17:51
Unicode hat nur 16 Bit. Da wären doch 32 Bit Verschwendung....?
Schon lang nicht mehr. Vor 20 Jahren dachte man das 16 Bit reichen würden, aber rein rechnerisch macht das schon keinen Sinn, 16 Bit sind nur 65 tausend Zeichen, mandarin hat bereits schon über 100 tausend. Man muss kein Mathematiker sein um zu merken das das nicht aufgeht. Zugegeben kommt man mit 65 tausend schon Recht weit, da das Ziel von Unicode aber ist jede Sprache, egal ob aktiv genutzt oder historisch jetzt und in der Zukunft zu unterstützen reicht das natürlich nicht.

Für UTF 16 würden deshalb Planes eingeführt, die im Grunde das gleiche sind wie die alten Codepages für die Unicode eigentlich die Lösung sein sollte. UTF-8 von daher ist ein kompaktes Format für UTF-32 also 32 bit und kann damit alle Unicode Charaktere abbilden.

Um also effizient mit Unicode chars zu hantieren lohnt es sich am ehesten die einfach von UTF-8 auf UTF-32 zu konvertieren und dann intern einfach mit den 32 bit integern zu arbeiten

Mathias
Beiträge: 6120
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Unicode Char Array

Beitrag von Mathias »

Unicode hat nur 16 Bit. Da wären doch 32 Bit Verschwendung....?
Mal ehrlich, für den normal Anwender reichen sogar die 8Bit Zeichensätze.
Wer von euch hat schon jemals ein Zeichen gebraucht, welches nicht im ursprünglichen IBM ASCII-Zeichensatz war ?
Ausgenommen die Smilies.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1904
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Unicode Char Array

Beitrag von Warf »

Mathias hat geschrieben:
Mi 10. Mai 2023, 13:33
Mal ehrlich, für den normal Anwender reichen sogar die 8Bit Zeichensätze.
Wer von euch hat schon jemals ein Zeichen gebraucht, welches nicht im ursprünglichen IBM ASCII-Zeichensatz war ?
Ausgenommen die Smilies.
Ich hab einen griechischen Kollegen dessen Name στέφανος (Stephanos) ist. Ich bin mir ziemlich sicher das er seinen Namen gerne benutzt

Benutzeravatar
theo
Beiträge: 10446
Registriert: Mo 11. Sep 2006, 19:01

Re: Unicode Char Array

Beitrag von theo »

Mathias hat geschrieben:
Mi 10. Mai 2023, 13:33
Mal ehrlich, für den normal Anwender reichen sogar die 8Bit Zeichensätze.
Wer von euch hat schon jemals ein Zeichen gebraucht, welches nicht im ursprünglichen IBM ASCII-Zeichensatz war ?
Ich vor ein paar Minuten.
50 Ω oder 10 μV

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6175
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Unicode Char Array

Beitrag von af0815 »

Ich habe das Problem in meinem Namen (ein ß).

Außerdem ist die österreichische Sprache voll mit Buchstaben aus dem "nicht" IBM ASCII-Zeichensatz. Auch wenn ich damit umgehen gelernt habe, nachdem einer meiner früheren Drucker nur 7 Bit ASCII konnte (War ein Lineprinter).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6120
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Unicode Char Array

Beitrag von Mathias »

Ich vor ein paar Minuten.
50 Ω oder 10 μV
Ich habe das Problem in meinem Namen (ein ß).
230: Micro
225: ss

Beim Omega dachte ich, habe ich es auch mal gesehen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10446
Registriert: Mo 11. Sep 2006, 19:01

Re: Unicode Char Array

Beitrag von theo »

Mathias hat geschrieben:
Mi 10. Mai 2023, 17:38
Ich vor ein paar Minuten.
50 Ω oder 10 μV
Ich habe das Problem in meinem Namen (ein ß).
230: Micro
225: ss

Beim Omega dachte ich, habe ich es auch mal gesehen.
Das war aber nicht deine Frage. Du hast nach ASCII gefragt, der geht nur bis 127 bzw. 7 Bit.

Atze
Beiträge: 10
Registriert: So 30. Apr 2023, 19:22

Re: Unicode Char Array

Beitrag von Atze »

Also die Antworten sind ja nicht sehr ergiebig. Ich dachte, ihr Profis könntet mir zwei Beispiele der Umwandlung geben. Ich benötige 16 Bit, weil ich 2 Buchstaben packe, um eine Datenreduzierung durchzuführen. Ich hätte gerne zwei Beispiele der Umwandlung vom Unicode Array in ein numerisches Array und wieder zurück. In MatLab war das einfach. Hier komme ich noch nicht zurecht.

Antworten