Forum: Mikrocontroller und Digitale Elektronik Umwandlung nach MOD256


von xray (Gast)


Lesenswert?

Hallo Leude !

Gibt es einen einfachen weg, in C  eine Umwandlung von eine int zahl 
nach MODULO 256 vorzunehmen ? Man müsste doch einfach nur nach rechts 
shiften und die obersten 2 Bytes verwerfen oder ?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

xray schrieb:
> Gibt es einen einfachen weg, in C  eine Umwandlung von eine int zahl
> nach MODULO 256 vorzunehmen ?
Was willst du denn machen?

Ich würde dir raten: schreib es einfach mathematisch mit Modulo und 
Divisionen hin. Der Compiler wird dir das dann soweit möglich mit 
Shift-und Tausch-Operationen optimieren.

von holger (Gast)


Lesenswert?

>Gibt es einen einfachen weg, in C  eine Umwandlung von eine int zahl
>nach MODULO 256 vorzunehmen ?

Wert &= (256 - 1);

von xray (Gast)


Lesenswert?

Danke. Aber funt immer noch nicht so richtig. Die richtige Checksumme in 
HEX wäre 134, bzw. MOD256 34.
1
{
2
  putch(DC1);                 // <DC1>
3
  putch(4);                  // 4(len)
4
  putch(ESC);                  // ESC
5
  putch('M');                  // M
6
  putch('T');                  // T
7
  putch(63);                  // Touchmakro 99
8
  
9
  unsigned int bcc = ((DC1 + 4 + ESC + 'M' + 'T' + 63));
10
  bcc &= (256 - 1);
11
  putch(bcc);                  //(35)BCC
12
}

Ist der Datentyp nicht der richtige ?

von xray (Gast)


Lesenswert?

Laut UART (HEXWERT) ist das Ergebnis immer 10 statt 34

von ... (Gast)


Lesenswert?

Gib doch mal die numerischen Werte von DC1 und ESC.... bzw: rechne doch 
einfach mal selbst nach. Man das ist ne einfache Addition! die 
Großbuchstaben wirste ja auch aus ner ASCII-Tabelle auslesen können...

von holger (Gast)


Lesenswert?

putch(63);                  // Touchmakro 99

63 ist nicht 99. 0x63 ist 99.

von xray (Gast)


Lesenswert?

Hat sich schon erledigt ! Aber danke... ich geh lieber pennen, hatte 
echt nen Typkonflikt.....

von ... (Gast)


Lesenswert?

Mit nem Türsteher?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.