Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 1.07 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Get int from char[] of bytes
  2. FILE * file = fopen("file");
  3. char buffer[size];
  4. fread(buffer,1,size,file);
  5. int = buffer[0x8]; // What should I do here?
  6. // I imagine it involves some strange pointer
  7. // arithmetic but I can't see what I should do,
  8. // casting to int just takes the first byte,
  9. // casting to (int *) doesn't compile
  10.        
  11. int foo = *((int *) &buffer[0x8]);
  12.        
  13. #include <stdio.h>
  14.  
  15. main() {
  16.     char buffer[14] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13 };
  17.     int foo = *((int *) &buffer[0x8]);
  18.     int bar = (int) buffer[0x8];
  19.  
  20.     printf("raw: %dn", buffer[8]);
  21.     printf("foo: %dn", foo);
  22.     printf("bar: %dn", bar);
  23. }
  24.        
  25. raw: 8
  26. foo: 185207048
  27. bar: 8
  28.        
  29. int x = *(int *)&buffer[8];
  30.        
  31. int x = buffer[8] + (buffer[9] << 8) + (buffer[10] <<  16) + (buffer[11] << 24);
  32.        
  33. int val = 0x00000000;
  34. char* ptr = reinterpret_cast<char*>(&val);
  35. *ptr = buffer[0x0a];
  36. ptr++;
  37. *ptr = buffer[0x0b];
  38. ptr++;
  39. *ptr = buffer[0x08];
  40. ptr++;
  41. *ptr = buffer[0x09];
  42. ptr++;
  43.        
  44. int *list = (int*)buffer;
  45. int n = fread(buffer, 1, size, file);
  46. for (int i=0; i< n/sizeof(int); i++)
  47.   printf("%dn", list[i]);