我需要读取前3个字节的数据(24位)并将其转换为十进制值。 例如我的前三个字节是0x00 0x00 0x0A。 我需要阅读这个并获得10作为值。 我将输入作为字符串(c ++字符串类)。我怎么能用c ++做到这一点?
注意:需要遵循整数值的Big endian表示。 我也无法生成输入。
编辑我的代码
用于生成:
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 ...
答案 0 :(得分:4)
我认为你想要的是:
unsigned char a[3] = { 0x00, 0x00, 0x0A };
int x = ((int)(char)a[0] << 16) | ((int)a[1] << 8) | a[2];`.
a数组必须是无符号字符,以便在将它们向左移动之前将它们转换为整数时不会进行符号扩展。这不适用于第一个,因为它可能有一个有效的符号位。祝你好运。