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
C++
,C#
?Grzegorz Świdwa