[英]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.