我试图将文件中的两个十六进制字符组合成一个十六进制,然后转换为十进制/整数。我从文件中读取整行作为字符串并将其解析为单独的字符(因为每个十六进制代表一个单独的实体),但是一个实体是两个十六进制字符,我试图找出它们的组合。所以在元素4和5的文件中,我有十六进制值0x1F和0x01,我试图将它们组合成0x011F(保留方向)。 以下是代码示例(使用C ++编写):
std::string fileline;
unsigned char tempchar;
tempchar = fileline.at(3); //Sample of parsing individual chars
std::cout << (int)tempchar <<std::endl; //Displaying the correct value
//This is where I am having problems
unsigned char newchar[2];
//From the file, fileline.at(5) = 0x01 and fileline.at(4) = 0x1F
//Trying to get the value of 287 from these two elements
newchar[0] = fileline.at(5); newchar[1] = fileline.at(4);
//This is where it goes wrong and I dont know how to combine the two separate elements
答案 0 :(得分:0)
如评论中所述,您需要转换将溢出整数类型的十六进制数字。对于这种情况,您需要使用执行此类任务的库(或制作一个)。
GNU MP library是一个很好的起点。您可以使用十六进制字符串实例化mpz_class
,并且您将获得具有所需值的功能等效类型(请参阅this API example)。然后,您可以在算术中使用它或将其作为十进制字符串打印。