C++ c++;输入不带0x的十六进制

C++ c++;输入不带0x的十六进制,c++,hex,hexdump,C++,Hex,Hexdump,我正在制作一个项目,通过放置偏移量(十六进制)来转储文件。我必须像0xBEE4DC一样放入带有0x的十六进制,因为如果我放入没有0x的十六进制,则应用程序将崩溃或返回错误。有没有办法把十六进制不加“0x”的 这是我的密码。我对这个项目保密,所以我不会显示比这个更多的代码 dump1.cpp void LoadMetadata(char* szFile) { string mystr; int offset2; int offset1; std::cout <

我正在制作一个项目,通过放置偏移量(十六进制)来转储文件。我必须像0xBEE4DC一样放入带有0x的十六进制,因为如果我放入没有0x的十六进制,则应用程序将崩溃或返回错误。有没有办法把十六进制不加“0x”的

这是我的密码。我对这个项目保密,所以我不会显示比这个更多的代码

dump1.cpp

void LoadMetadata(char* szFile)
{
    string mystr;
    int offset2;
    int offset1;
    std::cout << "Input unknown offset #1: ";
    getline(cin, mystr);
    stringstream(mystr) >> offset1;
    std::cout << "Input unknown offset #2: ";
    getline(cin, mystr);
    stringstream(mystr) >> offset2;
    std::cout << "\n";

    ...

}

下面的代码将数字保存为十六进制,不带0x,然后加载它

string mystr;
int offset1;
std::cout << "Input unknown offset #1: ";
getline(cin, mystr);
stringstream ss( mystr);
ss << std::hex;
ss >> offset1;
std::cout << offset1 << std::endl;

std::string str2;
stringstream s2;
s2 << std::hex << 0x2123;
s2.flush();
s2 >> str2;
std::cout << str2 << std::endl;
stringmystr;
国际抵销1;
标准::cout offset1;

std::cout下面的代码将数字保存为十六进制,不带0x,然后加载它

string mystr;
int offset1;
std::cout << "Input unknown offset #1: ";
getline(cin, mystr);
stringstream ss( mystr);
ss << std::hex;
ss >> offset1;
std::cout << offset1 << std::endl;

std::string str2;
stringstream s2;
s2 << std::hex << 0x2123;
s2.flush();
s2 >> str2;
std::cout << str2 << std::endl;
stringmystr;
国际抵销1;
标准::cout offset1;
std::cout此代码应该可以工作

std::cout << "Input unknown offset #1: ";
getline(cin, mystr);
stringstream(mystr) >> hex >> offset1;
std::cout << "Input unknown offset #2: ";
getline(cin, mystr);
stringstream(mystr) >> hex >> offset2;
std::cout << "\n";
std::cout>hex>>偏移量1;
标准::cout>hex>>offset2;
std::cout此代码应该可以工作

std::cout << "Input unknown offset #1: ";
getline(cin, mystr);
stringstream(mystr) >> hex >> offset1;
std::cout << "Input unknown offset #2: ";
getline(cin, mystr);
stringstream(mystr) >> hex >> offset2;
std::cout << "\n";
std::cout>hex>>偏移量1;
标准::cout>hex>>offset2;

std::cout在代码中,文本值需要将
0x
前缀解释为十六进制。因此,
0x
在类似的情况下不是可选的

  unsigned x = 0xABC;
例如,在使用流读取值时,不需要
0x
(事实上,如果需要前缀,则需要编码来处理它)。例如,使用
std::istringstream
std::string
读取数据

  std::string x("ABC");
  std::istringstream sx(x);
  unsigned v;

  sx >>  std::hex >> v;

  if (v == 0xABC) std::cout << "Equal\n";
std::字符串x(“ABC”);
std::istringstream sx(x);
无符号v;
sx>>标准::十六进制>>v;

如果代码中有(v==0xABC)std::cout,则文字值需要将
0x
前缀解释为十六进制。因此,
0x
在类似的情况下不是可选的

  unsigned x = 0xABC;
例如,在使用流读取值时,不需要
0x
(事实上,如果需要前缀,则需要编码来处理它)。例如,使用
std::istringstream
std::string
读取数据

  std::string x("ABC");
  std::istringstream sx(x);
  unsigned v;

  sx >>  std::hex >> v;

  if (v == 0xABC) std::cout << "Equal\n";
std::字符串x(“ABC”);
std::istringstream sx(x);
无符号v;
sx>>标准::十六进制>>v;
如果(v==0xABC)std::cout您可以将十六进制数(开头不带“0x”)作为字符串读取,然后解析字符串(检查它是否有“0x”,如果需要,在下一个操作之前添加“0x”),您可以将十六进制数(开头不带“0x”)作为字符串读取,然后解析字符串(检查它是否有“0x”,然后添加)下一个操作之前的“0x”(如果需要)