Hallo Community!
Ich sitze gerade an einem Problem wo ich absolute nicht weiterkomme. Und zwar möchte ich einen beliebigen String in ASCII Codes konvertieren und die ASCII Codes ins Dualsystem befördern. Das klappt soweit sehr gut. Dafür habe ich mir folgende Funktion geschrieben:
Spoiler anzeigen
Func _AscToDua($sString)
Local $asAsc = StringToASCIIArray($sString)
Local $aiDua[UBound($asAsc)][8]
Local $iA, $iB
For $iA = 0 To UBound($asAsc) - 1
For $iB = UBound($aiDua, 2) - 1 To 0 Step - 1
$aiDua[$iA][$iB] = Int(BitAND($asAsc[$iA], BitShift(1, $iB * -1)) <> 0)
Next
Next
Return $aiDua
EndFunc
Wenn ich als String "AutoIt" übergebe, erhalte ich ein Array mit folgenden Zahlen im Dualsystem:
Spoiler anzeigen
Hier die praktische Anwendungsmethode:
Spoiler anzeigen
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$array = _AscToDua('AutoIt')
_ArrayDisplay($array)
Func _AscToDua($sString)
Local $asAsc = StringToASCIIArray($sString)
Local $aiDua[UBound($asAsc)][8]
Local $iA, $iB
For $iA = 0 To UBound($asAsc) - 1
For $iB = UBound($aiDua, 2) - 1 To 0 Step - 1
$aiDua[$iA][$iB] = Int(BitAND($asAsc[$iA], BitShift(1, $iB * -1)) <> 0)
Next
Next
Return $aiDua
EndFunc
Nun wird es aber ein wenig kompliziert. Ich erhalte ja durch meine Funktion _AscToDua() ein Array. Dieses Array beinhaltet die ASCII Codes meines Strings pro Buchstabe im Dualsystem. Diese sind logischerweise 8 Bit / 1 Byte groß. Allerdings möchte ich diese 8 Bit nun in ein weiteres Array aufteilen, welches pro Index nur 3 Bit fasst. Diese Dualzahlen:
Sollen jetzt in 3 Bit päcken aufgeteilt werden. Später würde das ganze dann so aussehen:
Spoiler anzeigen
Und genau hier hängt es... Ich finde einfach keine Lösung dazu...
Bisher habe ich folgenden Ansatz:
Spoiler anzeigen
Func _8To3Bit($ai8Dua)
Local $ai3Dua[Ceiling(UBound($ai8Dua) / 3 * 8)][3]
Local $iA, $iB
For $iA = 0 To UBound($ai3Dua) - 1
For $iB = 0 To UBound($ai3Dua, 2) - 1
; Code
Next
Next
Return $ai3Dua
EndFunc
Das war's aber auch schon. Ich hoffe ihr könnt mir einen Denkanstoß geben! --- Ich komme hier nicht weiter.
LG. Make