例如,130ABF(十六进制)等于1247935(十进制),所以我的字节数组是
char buf[3] = {0x13 , 0x0A , 0xBF};
Run Code Online (Sandbox Code Playgroud)
我需要从字节数组中检索十进制值.
以下是我的示例代码:
#include<iostream>
using namespace std;
int main()
{
char buf[3] = {0x13 , 0x0A , 0xBF};
int number = buf[0]*0x10000 + buf[1]*0x100 + buf[2];
cout<<number<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果是:(错了)
1247679
Run Code Online (Sandbox Code Playgroud)
除非我改变了
char buf[3] = {0x13 , 0x0A , 0xBF};
Run Code Online (Sandbox Code Playgroud)
至
int buf[3] = {0x13 , 0x0A , 0xBF};
Run Code Online (Sandbox Code Playgroud)
然后它会得到正确的结果.
不幸的是,我必须将我的数组设置为char类型,任何人都知道如何解决这个问题?
将数组定义为:
unsigned char buf[3];
Run Code Online (Sandbox Code Playgroud)
请记住,char可以签名.
更新:为了完成答案,有趣的是添加"char"是一种类型,可以等同于"signed char"或"unsigned char",但它不是由标准决定的.
归档时间: |
|
查看次数: |
1860 次 |
最近记录: |