注册 登录
编程论坛 C++教室

用visual studio2008写16进制字符串转换为10进制整数控制台程序,结果。。。

nierzilaoma 发布于 2012-08-11 19:51, 1452 次点击
我是新手,以前学过c++基础,用的是visual c++ 6.0,只会用控制台程序,现在改用vs 2008,建立了一个win32 工程,在写转换函数时,声明int HexToDec(char *shex) ,结果形参 shex 不能通过,说是refactoring is not available on symbol.求解啊!!!
15 回复
#2
nierzilaoma2012-08-11 19:51
#3
nierzilaoma2012-08-11 19:51
自己顶起来
#4
nierzilaoma2012-08-11 19:52
#5
nierzilaoma2012-08-11 19:52
#6
nierzilaoma2012-08-11 19:52
别着急,楼下为你解答
#7
nierzilaoma2012-08-11 19:52
别着急,楼下为你解答
#8
pangding2012-08-11 20:04
把代码帖出来。
#9
nierzilaoma2012-08-11 20:09
int _tmain(int argc, _TCHAR* argv[])

{

    int HexToDec(char *shex)   
    {   
        int i,mid,val;   
        int len = strlen(shex);   

        if(len>8)   
            return FALSE;   

        mid = 0;
        int idec = 0;   
        for(i=0;i<len;i++ )   
        {   
            if( shex[i]>='0' && shex[i]<='9' )   
                mid = shex[i] - '0';   
            else if( shex[i]>='A' && shex[i]<='F')   
                mid = shex[i] - 'A' + 10;   
            else if( shex[i]>='A' && shex[i]<='F')   
                mid = shex[i] - 'A' + 10;   
            else   
                return -1;   

            mid <<= ((len-i-1)<<2);   
            idec |= mid;
        }
        return idec;   
    }
    val=HexToDec('FA');
    cout<<val;
    return 0;
}
#10
nierzilaoma2012-08-11 20:11
版主你好啊
#11
lz10919149992012-08-11 21:00
嵌套函数?Java里面都不可以,你还把它放到C++里?
#12
lz10919149992012-08-11 21:13
程序代码:
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

int HexToDec(const char* hex)
{
    int dec = 0, digit;
    for (int i = strlen(hex) - 1, j = 1; i > -1; --i, j *= 16) {
        if (hex[i] >= '0' && hex[i] <= '9')
            digit = hex[i] - '0';
        else if (hex[i] >= 'a' && hex[i] <= 'f')
            digit = hex[i] - 'a' + 10;
        else
            digit = hex[i] - 'A' + 10;
        dec += digit * j;
    }
    return dec;
}

int main()
{
    char hex[] = "7FFFFFFF";
    cout << HexToDec(hex) << endl;
    system("pause");
}
只有本站会员才能查看附件,请 登录
#13
nierzilaoma2012-08-11 21:32
回复 11楼 lz1091914999
嵌套函数
你的意思是要把函数的定义写在主函数外面吗,我记得可以写在主函数里面的啊
#14
nierzilaoma2012-08-11 21:42
回复 12楼 lz1091914999
非常感谢你,问题解决了
#15
lz10919149992012-08-12 10:08
回复 13楼 nierzilaoma
我不知道你的这个记得,是从哪里记得的。
#16
jarryjsq2012-08-12 18:52
lz写的有点乱啊,把函数怎么写到主函数里去了,我稍微改了一下。

主函数里这样写:注意前面要声明一下函数。
int val=HexToDec("FA");
    cout<<val;
    cin.get();
    cin.get();
    return 0;


函数:
int HexToDec(char *shex)   
    {   
        int i,mid,val;   
        int len = strlen(shex);   

        if(len>8)   
            return 0;   

        mid = 0;
        int idec = 0;   
        for(i=0;i<len;i++ )   
        {   
            if( shex[i]>='0' && shex[i]<='9' )   
                mid = shex[i] - '0';   
            else if( shex[i]>='A' && shex[i]<='F')   
                mid = shex[i] - 'A' + 10;   
            else if( shex[i]>='A' && shex[i]<='F')   
                mid = shex[i] - 'A' + 10;   
            else   
                return -1;   

            mid <<= ((len-i-1)<<2);   
            idec |= mid;
        }
        return idec;   
    }
1