如题:要将一个串“f32e”转换成十进制的数
尝试用_ttoi("f32e")来转换 发现串中只要出现字母转换出来的就是0;
求高手说两句
解决方案 »
- 主函数如何获得返回子函数的值?(子函数有线程,返回值是从线程里获得)
- c++中,this指针指向什么?我这个程序老报错,请高手看下!
- 请教关于opencv画直线的问题(部分直线画不出来)(结果图示例)
- Picture控件中显示jpg图片??
- 我的一个绘图多文档工程编译完执行后,没做任何操作,当关闭子窗口后即出现断言错误,实在不解
- 字符串拷贝,高分送!!
- 我在对话框中加了一个按钮,给这个按钮设置了自画属性之后,再运行程序,为什么程序会异常退出?
- error C2065: 'WH_KEYBOARD_LL' : undeclared identifier
- 请问脚本语言是如何编程的,
- 什么是窗口子类化
- 请问怎么做色带的Combox?
- skinmagic皮肤的重新加载
//
//
int HexValue(unsigned char a)
{
a -= 48;
if(a > 9 ) a -= 7;
return a;
}
//使用:
int adr=HexValue(szBuffer[0])*65536+HexValue(szBuffer[1])*4096+
HexValue(szBuffer[2])*256+HexValue(szBuffer[3])*16+HexValue(szBuffer[4]);
方法一:char fr[5];
ULONG intfr=strtoul(fr,NULL,16);
方法二:自己写一个转换的函数 StrToData(CString ,int);
#include "StdAfx.h"
#include "StrToData.h"
long npf(int d,int n)
{
int i;
long m=1;
for(i=0;i<n;i++)
m*=d;
return m;
}
BOOL isRightData(char c,int jz)
{
if((jz<2)||(jz>16))
return FALSE;
char ch[]="00112233445566778899aAbBcCdDeEfF";
int i=0;
for(i=0;i<jz;i++)
{
if(c==ch[i*2])return TRUE;
if(c==ch[i*2+1])return TRUE;
}
return FALSE;
}
long StrToData(CString strData,int jz)
{
int l=strData.GetLength();
long IntValue=0;
int bitValue;
int i;
for(i=0;i<l;i++)
{
if(isRightData(strData[i],jz))
{
if(isdigit(strData[i]))
bitValue=strData[i]-0x30;
else
{
switch(strData[i])
{
case 'a':
bitValue=0x0a;
break;
case 'b':
bitValue=0x0b;
break;
case 'c':
bitValue=0x0c;
break;
case 'd':
bitValue=0x0d;
break;
case 'e':
bitValue=0x0e;
break;
case 'f':
bitValue=0x0f;
break;
case 'A':
bitValue=0x0a;
break;
case 'B':
bitValue=0x0b;
break;
case 'C':
bitValue=0x0c;
break;
case 'D':
bitValue=0x0d;
break;
case 'E':
bitValue=0x0e;
break;
case 'F':
bitValue=0x0f;
break;
}
}
IntValue=bitValue*npf(jz,l-i-1)+IntValue;
}
else
return -1;
}
return IntValue;
}
int StrXToInt(CString StrX)
{
if (StrX.IsEmpty())
{
return 0;
}
int len=lstrlen(StrX);
int ret=0;
int ind;
for (int i=0;i<len;i++)
{
ind=len-1-i;
if ((StrX[ind]>='A' && StrX[ind]<='F'))
{
ret+=(StrX[ind]-'A'+10)*((int)pow(16,i));
}
else if((StrX[ind]>='a' && StrX[ind]<='f'))
{
ret+=(StrX[ind]-'a'+10)*((int)pow(16,i));
}
else if (StrX[ind]>='0' && StrX[ind]<='9')
{
ret+=(StrX[ind]-'0')*((int)pow(16,i));
}
else
break;
}
return ret;
}