[英]How to convert a char array of hex values to a single integer value in c++?
我有一个十六进制值的char数组,想将它们转换为单个整数值。 我当前使用的代码有两个问题:
问题1:运行此命令后存储在strHex中的值是-当我希望将其设置为“ 000927C0”时为“ 0927ffffffc0”-添加额外的“ ffffff”的原因是什么?
问题2:如果可能的话,我想一个解决方案将十六进制值的char数组转换为整数,而不使用stringstream。
char cArray[4] = { 0x00, 0x09, 0x27, 0xC0 }; // (600000 in decimal)
std::stringstream ss;
for (int i = 0; i < 4; ++i)
{
ss << std::hex << (int)cArray[i];
}
std::string strHex = ss.str();
int nHexNumber;
sscanf(strHex.c_str(), "%x", &nHexNumber);
转换后nHexNumber应该为600000,它给我-64。
#include <stdint.h>
#include <iostream>
int main(int argc, char *argv[]) {
unsigned char cArray[4] = { 0x00, 0x09, 0x27, 0xC0 };
uint32_t nHexNumber = (cArray[0] << 24) | (cArray[1] << 16) | (cArray[2] << 8) | (cArray[3]);
std::cout << std::hex << nHexNumber << std::endl;
return 0;
}
QEMU下的输出:
user@debian-powerpc:~$ uname -a
Linux debian-powerpc 3.2.0-4-powerpc #1 Debian 3.2.51-1 ppc GNU/Linux
user@debian-powerpc:~$ ./a.out
927c0
user@debian-powerpc:~$
在Windows上的Ubuntu下:
leus@owl:~$ uname -a
Linux owl 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
leus@owl:~$ ./a.out
927c0
leus@owl:~$
#include<arpa/inet.h>
#include<iostream>
using namespace std;
union {
unsigned char cA[4] = { 0x00, 0x09, 0x27, 0xc0 };
int k;
} u;
int main()
{
cout << htonl(u.k) << endl;
}
简单的方法是使用htonl ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.