Convert 2 bytes into an integer

后端 未结 4 818
挽巷
挽巷 2021-02-12 19:00

I receive a port number as 2 bytes (least significant byte first) and I want to convert it into an integer so that I can work with it. I\'ve made this:

char buf[         


        
4条回答
  •  鱼传尺愫
    2021-02-12 19:36

    I appreciate this has already been answered reasonably. However, another technique is to define a macro in your code eg:

    // bytes_to_int_example.cpp
    // Output: port = 514
    
    // I am assuming that the bytes the bytes need to be treated as 0-255 and combined MSB -> LSB
    
    // This creates a macro in your code that does the conversion and can be tweaked as necessary
    #define bytes_to_u16(MSB,LSB) (((unsigned int) ((unsigned char) MSB)) & 255)<<8 | (((unsigned char) LSB)&255) 
    // Note: #define statements do not typically have semi-colons
    #include 
    
    int main()
    {
      char buf[2];
      // Fill buf with example numbers
      buf[0]=2; // (Least significant byte)
      buf[1]=2; // (Most significant byte)
      // If endian is other way around swap bytes!
    
      unsigned int port=bytes_to_u16(buf[1],buf[0]);
    
      printf("port = %u \n",port);
    
      return 0;
    }
    

提交回复
热议问题