您的位置:首页 > 编程语言 > C语言/C++

16进制字符串转数字(C/C++,VB/VB.net,C#)

2007-08-15 20:16 344 查看
这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在C#中遇到该问题,让我费了很大的周折,才在msdn查到。

一、16进制字符串转数字

1、C/C++

I、最简单的办法:sscanf(“12AB”,,”%x”,&lngHex); //字符也可以为”0x12AB”

II、有个朋友,自行编写函数实现了该功能,据说速度比sscanf快:

BOOL   HexToDec(   LPCTSTR   shex,int&   idec   )
{
int   i,mid;
int   len   =   lstrlen(   shex   );
if(   len>8   )     return   FALSE;
mid   =   0;   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   FALSE;
mid   <<=   ((len-i-1)<<2);
idec   |=   mid;
}
return   TRUE;
}

2、VB

LngHex=val(“&H12AB”)

3、VB.net

LngHex=val(“&H12AB”)

4、C#

lngHex=Convert.ToInt32(“0x12AB”,16); //也可以直接写12AB

在Msdn上有一个条目:“如何:将十六进制字符串转换为数字”

使用ToInt32,第一个参数为要转换的字符串,第二个参数表示数字的基数,十六进制为16。

此外不仅支持16进制,2,8,10进制都支持

二、数字转16进制字符串

1、C/C++

Printf(“%x”,1234);

2、VB

Hex(1234)

3、VB.net

Hex(1234)

Int(1234).ToString(“X4”)

4、C#

((int)1234).ToString(“X4”);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 数字 休闲 进制 字符