输入十六进制并用C++读取十六进制
问题描述:
我正在尝试读取和写入十六进制,但我无法输入十六进制并将hex读回为十六进制而不是ascii。什么让我印刷的地址,并正确的价值观我不太确定我做对了。任何提示,我做错了什么?确定它的工作到目前为止只是为了修复阅读以打印实际地址而不是输入地址+1。输入十六进制并用C++读取十六进制
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int main(int argc,char ** argv) {
if(argc <= 1) {
cout<<"Enter a file name please";
exit(0);
} else {
fstream in;
in.open(argv[1],fstream::in | fstream::out | fstream::binary);
string input;
unsigned int v;
unsigned int print;
unsigned int g;
int iter;
for(iter = 0; input!="save";){
cout<<"Hex Edit("<<argv[1]<<"): ";
cin>>input;
if(input == "read"){
cout<<"Enter Offset: ";
cin>>hex>>v;
in.seekg(v);
print=in.get();
g=in.tellg();
cout<<"Value at offset("<<hex<<g<<"): "<<hex<<print;
cout<<endl;
}
if(input == "write"){
cout<<"Enter Offset: ";
cin>>hex>>v;
in.seekp(v);
cout<<"Enter Value: ";
cin>>hex>>v;
in.put(v);
}
} else if(input == "save") {
in.close();
}
cout<<endl;
}
}
return 0;
}
答
你似乎打算读,同时写一个字 - CIN和cout都能够与整体价值的工作,这将是理想的位置。请记住,十六进制字符串确实代表数字!流可以解释它们。只需更改变量v并打印为int类型,就可以一次读入整个十六进制值。
举一个例子:
int value;
cin >> hex >> value;
cout << hex << value;
我喜欢C和C++所以没关系我是一个终点还挺家伙:d – Aquertu
十六进制输入(当非常UB在C和C++用户给你垃圾)。所以要做到这一点的方法是读取到缓冲区并进行转换。 –
感谢Snyex的缩进我不认为你可以使用超过4个空格? – Aquertu