C++里面有没有直接把c 16进制转10进制函数的函数

如题所述

方法1:
#include <stdio.h>
int main()
{
char szValue[] = "0x11";
int nValude = 0;
sscanf(szValue,"%x",&nValude);
printf("%d\n",nValude);
return 0;
}
/*输出:
17
*/
主要用到sscanf这个库函数:
函数名: sscanf
功 能: 执行从字符串中的格式化输入
用 法: int sscanf(char *string, char *format[,argument,...]); //%x就是我们要格式化的类型,即输出十六进制

方法2:
#include <stdio.h>
#include <stdlib.h>//strtol头文件
int main()
{
char *p="0x11";
char *str;
int i = (int)strtol(p, &str, 16);//十六进制
printf("%d\n",i);
return 0;
}
/*输出:
17
*/
主要用到strtol这个库函数,它的使用方法是:

函数名: strtol
功 能: 将串转换为长整数
用 法: long strtol(char *str, char **endptr, int base);//base指明我们要转换为几进制数
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *string = "0x11", *endptr;
long lnumber;
/* strtol converts string to long integer */
lnumber = strtol(string, &endptr, 16);
printf("string = %s long = %ld\n", string, lnumber);
return 0;
}
/*输出:
string = 0x11 long = 17
*/
在VC 6.0的MFC程序中,我们有时要转换句柄就可以用strtol这个函数,比如:

HANDLE handle = (HANDLE)strtol(str,NULL, 16);

PS:句柄是什么?

句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。
有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一(如线程句柄,全局的有另一个标识符)。

详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。
常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),区域句柄(HRGN)等等。

在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释放。

方法3:

在网上,还看到一位朋友提出一种方法,就是读写INI文件(我认为这种方法效率太低,毕竟要读写文件的),如下:
//存储HANDLE
struct Tag_STRUCT
{
HWND hWnd;
} ;
struct Tag_STRUCT Struct;
Struct.hWnd = m_hWnd;
//把包含句柄的结构体写入ini文件
WritePrivateProfileStruct("Section","Key",&Struct,sizeof(Struct),"C:\\1.ini");
//读取HANDLE
struct Tag_STRUCT
{
HWND hWnd;
} ;
struct Tag_STRUCT Struct;
//从包含句柄的结构体的ini文件读取HANDLE
GetPrivateProfileStruct("Section","Key",&Struct,sizeof(Struct),"C:\\1.ini");
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-02-09
你转换过来有什么用啊?还是第一次听说编程里面转进制的

C++里面有没有直接把c 16进制转10进制函数的函数
char *str;int i = (int)strtol(p, &str, 16);\/\/十六进制 printf("%d\\n",i);return 0;} \/*输出:17 \/ 主要用到strtol这个库函数,它的使用方法是:函数名: strtol 功 能: 将串转换为长整数 用 法: long strtol(char *str, char **endptr, int base);\/\/base指明我们要转换为...

C++里面有没有直接把16进制转10进制的函数
int main(void){ char str[MAX],*p;\/\/从键盘上输入int数 cout<<"Please input a int:"<<endl;int n;cin>>n;\/\/将整型数n按十进制转换为字符串并输出 p=itoa(n,str,10);cout<<"str="<<str<<endl;cout<<"p="<<p<<endl;\/\/将整型数n按十六进制转换为字符串并输出 p=itoa(n,str...

c语言或c++中有16进制转换为10进制的函数可以直接调用吗?
16进制用%x,10进制用%d,8进制用%o输出,仅仅是输出形式不一样。

vc++16进制转换成10进制
void hlw_tenton(int decimalist,int step,int &sum,int &hl){\/\/此函数是原来编写的有关10进制和其他进制之间转换的函数,这里稍做修改符合你的题意要求后进行了调用 \/\/step使用step来记录要转化的进制的基数 \/\/decimalist要转化的数字 int arr[MaxNumber];int low,high;int w;\/\/用于记录有多少...

C++ 帮忙如何16进制转为10进制
buffer[k++]= getCharByValue((unsigned char)str[i]%16);} buffer[k++] = '\\0';} return buffer;} \/ 功能:将十六进制的数字数组,转换成相应的十进制数 参数:str :十六进制的数字数组,如 char str[]={0x13, 0xD6 ,0x20};n :str 的元素个数 返回:str 对应的十进制...

C++中如何将十六进制数转换为十进制数
用字符串存储要转换的16进制数,然后把一个一个字符转换为10进制树.大致代码如下:string hexa;cin>>hexa;int sum=0;for(int i=0;i!=hexa.size();++i){ sum+=change(hexa[i])*pow(16.0,double(hexa.size()-i-1));} 补充:change()函数就是取一个字符,返回相应的整数就行了.用switch...

C++ 帮忙如何16进制转为10进制
if(c >= 'a' && c <= 'f'){ dec += c - 'a' + 10;continue;} \/\/大写ABCDEF。if(c >= 'A' && c <= 'F'){ dec += c - 'A' + 10;continue;} \/\/没有从任何一个if语句中结束,说明遇到了非法字符。return -1;} \/\/正常结束循环,返回10进制整数值。return dec;} int...

C++16进制循环结构转换为10进制(追加100)
;if(str[i-1]=='x')data[j++]=swit(ch);str[i]=ch;i++;ch=getchar();} int s=0;cout<<"十六进制数为: ";for(i=2;i<j+2;i++)cout<<str[i];cout<<endl<<"对应的十进制数乘以2以后为: ";for(i=0;i<j;i++)s=s*16+data[i];cout<<2*s<<endl;return 0;} ...

C语言 写一个函数 输入一个十六进制数 输出相应的十进制
include<string.h> include<math.h> \/ 函数:convert 功能:十六进制转十进制 \/ void conver(char arr[]){ int i,j=0,k=0,sum=0,n=strlen(arr);int num[100];for(i=0;i<n;i++){ switch(arr){ case'A':num[j++]=10;break;case'B':num[j++]=11;break;case'C':num[j++]...

c++怎么把十六进制进制转成十进制
16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};cout<<"pleaseanumber."<<endl;cin>>n;while(n>0){ num[i++]=n%16;n=n\/16;} for(i=i-1;i>=0;i--){ m=num[i];cout<<hex[m];} system("pause");return0;} ...

相似回答