如何将 24 位(整数值)转换为字符串,反之亦然

how to convert a 24 bit (integer value) to string and vice versa?

本文关键字:转换 字符串 反之亦然 整数      更新时间:2023-10-16

我需要读取前 3 个字节的数据(24 位)并将其转换为十进制值。 例如. 我的前三个字节是0x00 0x00 0x0A.我需要阅读此内容并获取 10 作为值.我将以字符串(c ++字符串类)的形式获取输入。 如何在 C++ 中做到这一点?

注意:需要遵循整数值的大端表示。 我也无法生成输入.

编辑我的代码
用于生成 :

  stringstream lss ;
   int lNo =32 ;     // I know its 32 bit integer value
   lss<<lNo ;   //string to int  
   // got output  in  lss.str()       as 32       . size of the string is 2 .
    // Expected out put is  0x00000020          size of the string should be 4 .. 

所以我也尝试了下面的代码

 stringstream lss ;
  char a[3] ={0x00,0x00,0x0A} ;
  lss<<a ;
 // this time output is empty string  ...

我想你想要的是这个:

unsigned char a[3] = { 0x00, 0x00, 0x0A };
int x = ((int)(char)a[0] << 16) | ((int)a[1] << 8) | a[2];`.

至关重要的是,数组必须是无符号字符,以便在将它们左移之前将它们转换为整数时不会得到符号扩展。这不适用于第一个,因为它可能有一个有效的符号位。祝你好运。