Advertisement
Electgpl

Rutina para pasar de 32bit a 4byte

Sep 22nd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.44 KB | None | 0 0
  1. //------------------------------------------------------------------
  2. #define HIGH_32(number)   ( (uint8_t)((number&(0xFF000000))>>24) )
  3. #define MIDH_32(number)   ( (uint8_t)((number&(0x00FF0000))>>16) )
  4. #define MIDL_32(number)   ( (uint8_t)((number&(0x0000FF00))>>8)  )
  5. #define LOW_32(number)    ( (uint8_t) (number&(0x000000FF))      )
  6.    
  7.    uint32_t number = 69123456;
  8.    
  9.    vec[0] = HIGH_32(number);
  10.    vec[1] = MIDH_32(number);
  11.    vec[2] = MIDL_32(number);
  12.    vec[3] = LOW_32(number);
  13. //------------------------------------------------------------------
  14. bool_t saveNumberInByteArray( uint64_t number,
  15.                           uint8_t* byteArray,
  16.                           uint8_t  byteArraySize ){
  17.    uint8_t i = 0;
  18.    uint8_t* ptr = (uint8_t*)&number;
  19.  
  20.    if( byteArraySize > 8 ){
  21.       return FALSE;
  22.    }
  23.  
  24.    for( i=0; i<byteArraySize; i++ ){
  25.       byteArray[i] = *ptr;
  26.       ptr++;
  27.    }
  28.  
  29.    return TRUE;
  30. }
  31. //------------------------------------------------------------------
  32. bool_t loadNumberFromByteArray( uint64_t* number,
  33.                             uint8_t*  byteArray,
  34.                             uint8_t   byteArraySize ){
  35.    uint8_t i = 0;
  36.    uint64_t numb = 0;
  37.  
  38.    if( byteArraySize > 8 ){
  39.       return FALSE;
  40.    }
  41.  
  42.    for( i=0; i<byteArraySize; i++ ){
  43.       numb |= ((uint64_t)(byteArray[i]) << 8*i);
  44.    }
  45.    *number = numb;
  46.  
  47.    return TRUE;
  48. }
  49. //------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement