马骐

马骐
随笔 - 78, 评论 - 839, 引用 - 94

导航

工具

关于

喜欢是一种波澜壮阔的感觉,不同于一见钟情的突然发生,而是逐渐增加的爱不释手与深情眷恋,喜欢你,只是如此简单而矣

每月存档

广告



访客

 

如何把任何进制字符串转成整数是很简单的,通常都使用
a. Convert.ToInt32(string value,? int fromBase);
b. Int32.Parse(string?s,?NumberStyles?style);

c. Double.TryParse(
string s, NumberStyles style, IFormatProvider provider, out int result);
我们可以通过设置fromBase或NumberStyles来控制是哪种进制的数值,比如:

// 0x前缀可选
string s = "0x8564";
int?nRet = Convert.ToInt32(s, 16);

这三种方法不同是如果解析失败,Int32.Parse(s)总会抛出异常;Convert.ToInt32(s)在s为null的情况下不会抛出异常而是简单的返回0给调用方;而Double.TryParse(ss, nRet)则无论如何都不抛出异常,只会返回true或false来说明解析是否成功,如果解析失败,调用方将会得到0值。

但在C#中把一个整数转成二进制或十六进制字符串输出怎么办呢,在C++或MFC中格式化输出是非常简单的,使用printf或CString的Format一句话就搞定:

printf( "Decimal %d as:\n Hex: %Xh C hex: 0x%x Octal: %o\n",count, count, count, count ); CString strOutput; strOutput.Format("Decimal %d as:\n Hex: %Xh C hex: 0x%x Octal: %o\n",count, count, count, count);

?我问HopeQ, 他是高手中的高手,他告诉我没有现成的办法,那就只能不停的以基数取模并除以基数构成一个字符串了。本来自己飞快的写了一个函数,后来一看MSDN,在MSDN的源代码中有一个类叫AnyRadix,AnyRadix 实现ICustomFormatter, IFormatProvider接口,也不错。

感谢Cavingdeep帮助,说.net还是提供了这样的函数Convert.ToString Method (Int32, Int32),向Cavingdeep学习.

int n = 89;
string str = Convert.ToString(n, 2);

相关文章

打印 | 张贴于 2005-03-28 07:46:00 | Tag:暂无标签

留言反馈

#re: 使用IFormatProvider接口和GetFormat方法格式化输出 编辑
convert.ToString(n, 2)只是直接输出n对应的二进制数,其输出长度如何控制呢?
2006-05-20 10:07:00 | [匿名用户:吹雪]
#re: 使用IFormatProvider接口和GetFormat方法格式化输出 编辑
倒是一个好方法!
2005-04-28 10:07:00 | [匿名用户:桨叶式流量计]
#re:使用IFormatProvider接口和GetFormat方法格式化输出 编辑
^_^,Pretty Good!
2005-04-15 20:38:00 | [匿名用户:CO一氧化碳检测仪]
#使用IFormatProvider接口和GetFormat方法格式化输出 编辑
^_^,Pretty Good!
2005-04-08 12:09:00 | [匿名用户:界面张力仪]
#re: 使用IFormatProvider接口和GetFormat方法格式化输出 编辑
偷偷得笑一笑
2005-04-01 16:18:00 | [匿名用户:yippeesoft]
#re: 使用IFormatProvider接口和GetFormat方法格式化输出 编辑
16进制倒是简单,ToString("x")就行
2005-03-29 17:09:00 | [匿名用户:怡红公子]
#re: 使用IFormatProvider接口和GetFormat方法格式化输出 编辑
BlueInkstone太客气了。^_^
2005-03-29 13:33:00 | [匿名用户:Cavingdeep]
#re: 使用IFormatProvider接口和GetFormat方法格式化输出 编辑
如果是将一个整数转成二进制或十六进制字符串的话,.NET Framework中还是有现成的类的。这样:

int n = 89;
string str = Convert.ToString(n, 2);

也就是Convert.ToString方法。
2005-03-29 08:41:00 | [匿名用户:Cavingdeep]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System