Wątek przeniesiony 2021-01-06 20:46 z C/C++ przez Patryk27.

Konwersja Ascii -> binary c#

0

Siema, już nie wiem co robić i może ktoś pomoże nowicjuszowi
Generalnie to mam zakodowane wiadomości, które po rozdzieleniu konkretnej części wyglądają tak "13u?etPv2;0n:dDPwUM1U1Cb069D"
Potrzebuję to przerobić na ASCII 6 bit dziesiętny 48-111, w tym celu odejmuje się 48 i jeżeli wartość przekracza 40 to odejmuje się 8.
1 i 3 zostają jak jest, u zmienia wartość na 61, "?" na 15 itd.
Nie mam pojęcia jak przekonwertować te liczby na postać binarną. Wcześniej miałem kod

= String.Concat(partToDecode.Select(c => Convert.ToString(c, 2)));

Gdy używam go teraz po odejmaniu jak w instrukcji

"In the NMEA encoding for AIS - each ASCII character corresponds to 6 binary bits (unlike normal ASCII which uses 8 bits) so you need to step through each character and subtract 48 from the ASCII - then if it´s still a decimal number > 40 subtract another 8 - then convert to binary: this guarantees a 6 bit number. Looking at our data (just the first few characters)"

to nie otrzymuje rezultatu, który bym chciał otrzymać. Output dla 1 wynosi 110001 a powinno być 000001

foreach (char c in partToDecode)
                        {
                            var sum = c - 48;
                            if (sum>40)
                            {
                                sum = sum - 8;
                            }

                            string sumaa = sum.ToString();
                            string sumaaa = String.Concat(sumaa.Select(d => Convert.ToString(c, 2)));
                            File.AppendAllText(@"C:\Users\jakub\OneDrive\Pulpit\SomeOtherFile3.txt", sumaaa);
                        }

Ta pętla jest w innej pętli i chciałbym też by za tą pętlą była nowa linia. Jak ktoś coś wie to dzięki
Sorry za te zmienne pod koniec, już zmęczony byłem i to miał być szybki test

0

Wystarczyło Convert.ToString(sum, 2).PadLeft(6, '0');
Nadal jednak borykam się z brakiem nowej linii po pętli foreach

1 użytkowników online, w tym zalogowanych: 0, gości: 1