main.c 870 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * main.c
  3. *
  4. * Created on: 07.03.2014
  5. * Author: mrt
  6. */
  7. #include <stdio.h>
  8. #include "opcua.h"
  9. #define UA_NO_ERROR ((Int32) 0)
  10. Int32 decodeInt32(char const * buf, Int32* pos, Int32* dst) {
  11. Int32 t1 = (Int32) (((SByte) (buf[*pos]) & 0xFF));
  12. Int32 t2 = (Int32) (((SByte) (buf[*pos + 1]) & 0xFF) << 8);
  13. Int32 t3 = (Int32) (((SByte) (buf[*pos + 2]) & 0xFF) << 16);
  14. Int32 t4 = (Int32) (((SByte) (buf[*pos + 3]) & 0xFF) << 24);
  15. *pos += sizeof(Int32);
  16. *dst = t1 + t2 + t3 + t4;
  17. return UA_NO_ERROR;
  18. }
  19. typedef union Integer {
  20. Int32 i;
  21. SByte b[4];
  22. } Integer;
  23. int main() {
  24. Integer a = { UA_IdType_Guid };
  25. Integer b;
  26. int pos = 0;
  27. a.i = 0;
  28. a.b[3] = 1;
  29. printf("%d, {%d,%d,%d,%d}\n", a.i, a.b[0], a.b[1], a.b[2], a.b[3]);
  30. decodeInt32((char *) &a.b[0], &pos, &(b.i));
  31. printf("%d, {%d,%d,%d,%d}\n", b.i, b.b[0], b.b[1], b.b[2], b.b[3]);
  32. return 0;
  33. }