我试图将一个BYTE数组转换成等效的unsigned long long int值,但是我的代码没有按照预期工作。请帮忙修复它或建议另一种方法。
额外信息:这4个字节组合成一个十六进制数,相应的十进制数是输出结果。例如给定的byteArray = {0x00, 0xa8, 0x4f, 0x00},十六进制数是00a84f00,对应的十进制数是11030272。
我收到了以下输出:
预期的输出结果是:
额外信息:这4个字节组合成一个十六进制数,相应的十进制数是输出结果。例如给定的byteArray = {0x00, 0xa8, 0x4f, 0x00},十六进制数是00a84f00,对应的十进制数是11030272。
#include <iostream>
#include <string>
typedef unsigned char BYTE;
int main(int argc, char *argv[])
{
BYTE byteArray[4] = { 0x00, 0x08, 0x00, 0x00 };
std::string str(reinterpret_cast<char*>(&byteArray[0]), 4);
std::cout << str << std::endl;
unsigned long long ull = std::strtoull(str.c_str(), NULL, 0);
printf ("The decimal equivalents are: %llu", ull);
return EXIT_SUCCESS;
}
我收到了以下输出:
The decimal equivalents are: 0
预期的输出结果是:
The decimal equivalents are: 2048
memcpy()
。 - iBug2048
?至少使用{0x32,0x30,0x34,0x38}
。 - user202729