Displayansteuerung 3line/9bit

OP (Firma: keine) #1803705
Lesenswert?
• ▲
▼
Hallo,
bin neu hier und weiss nicht, ob ich richtig bin in diesem thread mit 
meinem thema, aber ich versuchs mal;)

Also muss ein byte array so manipulieren, dass ich ein scheinbares "1bit 
+8bit" datenformat bekomme. also rutscht nach jedem
byte die ganze geschichte um 1 mehr nach hinten, was in einem weitern 
array aufgefangen wird. das amcht die
ganze sache mit dem shiftcommand etwas undurchsichtig.

Beispiel, wie es sein sollte:
die 8 bit nutzdaten:

01111011bin = 123dez
00010000bin = 32dez
11110101bin = 245dez

mit einer 1(D/XC) vorab für jedes Byte verschiebt sich das ganze system 
so:

10111101bin = 189dez
11000100bin = 196dez
111110bin = 62dez
10100000bin =160dez(3 ersten bit sind die lezten 3 bit von 245dez, quasi 
neues array wegen den zusätlichen einsen)

real hab ich ca 200byte nutzdaten im array, was sich mit ner führenden
1 auf 200byte plus 25 byte führende 1 vergrößert.

ich stehe da grade etwas aufm schlauch. vll hat einer einen tipp, wie
ich da ran gehen kann? Dafür wäre ich sehr dankbar.

Eigentlich bezieht sich das mehr auf c#, aber vll hat hier
ja jemand damit erfahrung, wie ich mein array soweit manipulieren könnte

grussa alex
OP (Firma: keine) #1812511
Lesenswert?
• ▲
▼
Jo, habs gelöst. warscheinlich nicht grade auf die sauberste art und 
weiste, aber es läuft.
,,...abgesehen davon bin ich kein vollblut-inf;-).
muss zugeben, hat mich ne menge nerven gekosten, aber man auch auch ne 
menge gelernt und man hat sogar
spass dran, wenn es am ende geht!!
Leider war es mit den üblichen Bitoperationen nicht getan.
gruss alex



C#:
1
static class Program
2
    {
3

4
        static void Main()
5
        
6
        {//Testarray
7
            byte[] byteArray = new byte[] { 1, 255, 1, 255, 1, 255, 1, 255 };
8

9
           string binstring = ByteToString(byteArray);
10
           Console.WriteLine("binstring D/XC: " + binstring);
11
           bitstring(binstring);
12
                     
13
      
14
        }
15

16

17
        //Wandelt byte array in binären String 1 + 8bit
18
        private static string ByteToString(byte[] ByteArray)
19
        {
20
            System.Text.StringBuilder sb = new StringBuilder();
21
            int i = 0;
22
            foreach (byte b in ByteArray)
23
            {
24
                sb.Append(Convert.ToString(b, 2).PadLeft(9, '0'));
25
                string s = "1";//wird dann 1  
26
                sb[9 * i] = s[0];
27
                i++;
28
            }
29
            return sb.ToString();
30
        }
31

32
        //zerlegt 9bit string(1+8bit) in 8 bitblöcke
33
        private static int bitstring(string str)
34
        {
35
           int i = 0;
36
           int s = 0;
37
           int count = 0;
38
           string bitstring = "0";
39
            //Array größe anpassen:!!
40
           byte[] newbyteArray = new byte[9];
41

42
           for (i = 0; i < str.Length; i = i + 8)
43
           {
44
               
45
               bitstring = "" + str[0 + i] + str[1 + i] + str[2 + i] + str[3 + i] + str[4 + i] + str[5 + i] + str[6 + i] + str[7 + i];
46
               s = bintodec(bitstring);
47
               byte b = (byte)s;
48
               Console.Write(b + "\n");
49
               newbyteArray [count] = b;
50
               count++;
51
           }                                               
52
           
53
           Console.WriteLine(newbyteArray.Length);
54
           foreach (byte val in newbyteArray) { Console.WriteLine("aus array" + val); }
55
           return s;
56
        }
57

58
        // Umerechung von 8bit bin in dec
59
        private static int bintodec(string str)
60
        {
61
            int a = 0; int b = 0; int c = 0; int d = 0; 
62
            int e = 0; int f = 0; int g = 0; int h = 0;
63
            string bin0 = "0";
64
           
65
            if (str[0] == bin0[0]) { a = 0; } else { a = 128; }
66
            if (str[1] == bin0[0]) { b = 0; } else { b = 64; } 
67
            if (str[2] == bin0[0]) { c = 0; } else { c = 32; } 
68
            if (str[3] == bin0[0]) { d = 0; } else { d = 16; }
69
            if (str[4] == bin0[0]) { e = 0; } else { e = 8; }
70
            if (str[5] == bin0[0]) { f = 0; } else { f = 4; } 
71
            if (str[6] == bin0[0]) { g = 0; } else { g = 2; }
72
            if (str[7] == bin0[0]) { h = 0;}  else { h = 1; }
73

74
            int val = (a + b + c + d + e + f + g + h);            
75
            return val;
76
       }
77
      
78
    }

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.