【问题标题】:Converting from Hex to Dec C/C++从十六进制转换为十进制 C/C++
【发布时间】:2018-11-18 21:35:54
【问题描述】:

我有转换问题。我的程序可以从 dec 转换为 hex,但不能从 hex 转换为 dec。请帮帮我。

int main(){

string liczba;
while(cin>> liczba){
    int number = atoi(liczba.c_str());
if(number==-1){
    break;
}
else{
if(liczba[0]==0 && liczba[1]=='x'){
    printf("%d\n", number);
}
else{
    printf("0x%X\n", number);
}
}}

return 0;}

【问题讨论】:

    标签: hex decimal


    【解决方案1】:

    如果输入字符串以“0x”开头,那么atoi() 将始终返回0,因为它会在看到非数字字符(在本例中为“x”)时停止检查字符串。因此,对于十六进制输入,number 将始终为 0。

    最简单的解决方案是使用strtol() 而不是atoi()。使用 base 参数 0 调用的 strtol() 将识别“0x”前缀,然后将以下字符视为十六进制数字,这是您的程序需要的。看起来像这样:

      number = strtol(liczba.c_str(), NULL, 0);
    

    如果您的平台没有strtol(),那么下一个最简单的解决方案是使用sscanf(),它也可以理解“0x”前缀:

      sscanf(liczba.c_str(), "%i", &number);
    

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2013-07-20
      • 2012-06-17
      • 1970-01-01
      • 2014-12-31
      • 2021-06-26
      • 2010-10-15
      • 2017-07-19
      • 2011-08-04
      相关资源
      最近更新 更多