16进制格式字符串转 int64

天大地大妈咪最大 提交于 2020-01-24 23:30:00
#include <iostream>
#include <sstream>
using namespace std;

int main()
{
/*----------------------------------
    十六进制,八进制转十进制
----------------------------------*/
    int decimal1,decimal2;
    string oct_test = "75";
    string hex_test = "A3";

    stringstream ss1;
    
    ss1.str(oct_test);
    ss1>>oct>>decimal1;
    cout<<"Convert oct to decimal:"<<decimal1<<endl;

    //ss1.clear();//若不想从新定义stringstream流,必须先清空ss1中的缓存
    stringstream ss2;
    ss2.str(hex_test);
    ss2>>hex>>decimal2;
    cout<<"Convert hex to decimal:"<<decimal2<<endl;

/*----------------------------------
    十进制转八进制、十六进制
----------------------------------*/
    int decimal;
    stringstream ss,sss;
    cout<<"Enter a decimal number:";
    cin>>decimal;
    /*下面两句等价于:
    cout<<"Convert to hex:"<<hex<<decimal<<endl;
    */
    //十进制转十六进制
    ss<<hex<<decimal;
    cout<<"Convert to hex:"<<ss.str()<<endl;
    //十进制转八进制
    ss.str(""); //同上,若不想从新定义stringstream流,必须先将ss.str()置为空
    ss<<oct<<decimal;
    cout<<"Convert to oct:"<<ss.str()<<endl;


    system("pause");
    return 0;
}


sscanf函数
  sscanf函数原型为int sscanf(const char *str, const char *format, ...)。将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内。具体功能如下:

  (1)根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等。

  (2)取指定长度的字符串

  (3)取到指定字符为止的字符串

  (4)取仅包含指定字符集的字符串

  (5)取到指定字符集为止的字符串

  当然,sscanf可以支持格式串"%[]"形式的,有兴趣的可以研究一下。

int main(){
    char s[15] = "123.432,432";
    int n;
    double f1;
    int f2;
    sscanf(s, "%lf,%d%n", &f1, &f2, &n);
    cout<<f1<<" "<<f2<<" "<<n;
    return 0;
} 


UINT64 n=0;
sscanf("fffff8016c432238", "%llx", &n);

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!