L2TP RX Bytes Counter Probleme

Dominik Heidler dominik at heidler.eu
Sa Mär 12 17:11:31 CET 2016


Hi,

Am 12.03.2016 um 11:50 schrieb Tim Niemeyer:
> Der Fehler steckt also mMn nur im kaputten Überlauf. Die Lösung könnte
> sein ein atomic_ulong_t zu nehmen, was wohl auch der native Datentyp
> hinter dem atomic eigentlich ist.

Den Datentyp atomic_ulong_t gibt es scheinbar nicht.
Aber wir brauchen ihn ja eigentlich garnicht, da die Daten (binär) ja
gleich bleiben. Sie werden nur anders interpretiert.

Ein expliziter cast auf den 32 bit unsigned Wert beim Lesen des Werts
müsste auch funktionieren.

Ich habe es jetzt nochmal nachgestellt:

> #include <stdio.h>
> #include <stdint.h>
>  
> int main(void)
> {   
>     int8_t i32 = 128;
>     uint16_t i64;
>     printf("i32: %i\n", i32);
> 
>     i64 = i32;
>     printf("i64 without explicit signed cast: %u\n", i64);
> 
>     i64 = (uint8_t)i32;
>     printf("i64 with explicit signed cast: %u\n", i64);
>     return 0;
> }

Hat die Ausgabe:
> i32: -128
> i64 without explicit signed cast: 65408
> i64 with explicit signed cast: 128

Grüße,
Dominik



Mehr Informationen über die Mailingliste franken-dev