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

这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在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”);