首页
社区
课程
招聘
[求助]C++里面有没有直接把16进制转10进制的函数?
发表于: 2008-5-24 15:37 29972

[求助]C++里面有没有直接把16进制转10进制的函数?

2008-5-24 15:37
29972
显示16进制转10的结果非常简单.

但是如何做成dll 让它返回10进制呢?

比如输入 hextodec (0x401000) 返回 一个十进制数

int WINAPI hextodec (char *num)
{
    这里除了单个转换外c++有直接的函数转换吗?

return 10进制值 ;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
比如显示的话 直接sprintf 或者 cout

返回值的处理就像
int i=18;
cout<<hex<<i; //这样简单可以的???
2008-5-24 15:40
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
char *itoa(int value, char *string, int radix)
将整形数value转换为其等价的字符串
value 要转化的数值,radix 转换的进制,如10表示按十进制转换
2008-5-24 16:20
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
小虾班班,很高兴又见到您了... 不过有一点点小问题不明白,请问一下小虾班班
#include <windows.h>


char* WINAPI hextodec (int num)
{
	char *buf=new char[10];
	itoa(num,buf,16);
	return buf; //转换16进制很正常// 但是10进制没变化.怎么回事? 
}


小虾班班 能不能请您帮偶写一个DLL.  函数像这样子hextodec ("0xAABBCC")  返回 11189196 的例子. 谢谢您了...
2008-5-24 16:43
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
5
sscanf = 你的hextodec
2008-5-24 17:30
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
//该函数接受一个数据字符串参数,这个字符串前面如果有"0x"前导符则以十六进制字符转十进制数值,如果不加"0x"前导符号,则以十进制字符转十进制数值。如HexToDec("12") return 12,HexToDec("0x12") return 18,如果该数据中包含有不是属于数据的字符(如'ghijk'等字符),则函数直接返回0。
int WINAPI HexToDec(char *Str)
{
        bool IsHex=FALSE;
        int result=0;
        int i=0,szLen=0,nHex;
        if (Str[0] == '0')
                if ((Str[1] == 'x') || (Str[1] == 'X'))
                {
                        IsHex = TRUE;
                        i = 2;
                }
        szLen = strlen(Str);
        nHex = '0';
        for (; i < szLen; i++)
        {
                if (IsHex)
                {
                        if ((Str[i] >= '0') && (Str[i] <= '9'))
                                nHex = '0';
                        else if ((Str[i] >= 'A') && (Str[i] <= 'F'))
                                nHex = 'A' - 10;
                        else if ((Str[i] >= 'a') && (Str[i] <= 'f'))
                                nHex = 'a' - 10;
                        else
                                return 0;
                        result = result * 16 + Str[i] - nHex;
                }else
                {
                        if ((Str[i] < '0') || (Str[i] > '9'))
                                return 0;
                        result = result * 10 + Str[i] - nHex;
                }
        }
        return result;
}
2008-5-24 19:13
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
小虾班班也是这样子转的... 没有简单的函数吗?  很谢谢小虾班班哦...我再找找简单的,您的代码我收藏了...

组长的意思是什么呢?~~~
2008-5-24 20:48
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
int hextodec(char *str)
{
  int i;
  sscanf(str,"%x",&i);
  return i;
}


备份用...谢谢...
2008-5-24 21:17
0
雪    币: 256
活跃值: (743)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=wqrsksk;457800]
int hextodec(char *str)
{
  int i;
  sscanf(str,"%x",&i);
  return i;
}


备份用...谢谢...[/QUOTE]

  return i;    ?????

可以返回临时变量?
2008-5-25 15:56
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
10
int Hex2Dec(LPSTR s)
{
    int d,i;
    for(i=0;i<strlen(s);i++) //判断是否为正确的十六进制串,不是返回-1
    {
        if(s[i]>='0' && s[i]<='9' || s[i]>='a' && s[i]<='f' || s[i]>='A' && s[i]<='F' ){}
        else { return -1; }
    }
    sscanf(s,"%x",&d);
    return d;
}
2008-5-26 10:23
0
游客
登录 | 注册 方可回帖
返回
//