SOS!!! 如何把CString类型的字符串转化成相应的16进制的整形int?谢谢!

时间:2023-01-07 10:16:50
比如现在有一个变量为 CString :

CString strVal1 = “0x0701”;
现在我要把“0x0701”当作整形 int 的 16进制 来处理?如何才能转化呢?

我知道有把 CString strVal2 = “10”;这种变量转化成 10 二进制的整形 int!

6 个解决方案

#1


套用公式计算一下,自己写个公式,把字符串当作数组就可以了阿

#2


CString strVal1 = "0x0701";
int nValue;
sscanf(strVal1.c_str(), "%x", &nValue);

#3


char *stopString;
long int lValue;
lValue=strtol(strValue.GetBuffer(strValue.GetLength()+1),&stopString,16);
strValue.ReleaseBuffer()
也可以使用strtod

#4


有2种方法,一种是直接调用函数.好像有个strtolen 的函数就是完成这个功能的.
第二种方法是比较根本的方法, 算法我有些忘记了,你可以察看dennis写的c语言程序设计
.现在提供思路:可能有些错误

     for(i = 0;i <strlen(s);i++)
       for(j = 0;i< k;j++)
           k = s[i] /16 + s[i] - 'a' ;

#5


有C++函数直接完成

#6


CString strVal1 = "0x0701";
int nValue;
sscanf(strVal1, "%x", &nValue);

#1


套用公式计算一下,自己写个公式,把字符串当作数组就可以了阿

#2


CString strVal1 = "0x0701";
int nValue;
sscanf(strVal1.c_str(), "%x", &nValue);

#3


char *stopString;
long int lValue;
lValue=strtol(strValue.GetBuffer(strValue.GetLength()+1),&stopString,16);
strValue.ReleaseBuffer()
也可以使用strtod

#4


有2种方法,一种是直接调用函数.好像有个strtolen 的函数就是完成这个功能的.
第二种方法是比较根本的方法, 算法我有些忘记了,你可以察看dennis写的c语言程序设计
.现在提供思路:可能有些错误

     for(i = 0;i <strlen(s);i++)
       for(j = 0;i< k;j++)
           k = s[i] /16 + s[i] - 'a' ;

#5


有C++函数直接完成

#6


CString strVal1 = "0x0701";
int nValue;
sscanf(strVal1, "%x", &nValue);