C#字符串与数值类型、字节数组的互相转换实战案例.docxVIP

C#字符串与数值类型、字节数组的互相转换实战案例.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

C#字符串与数值类型、字节数组的互相转换实战案例

目录TryParseConvert实战总结

TryParse

正常来说,想把类似1024或者3.14之类的字符串转为对应数据类型的数值,只需要int.Parse或double.Parse就可以了。如果输入的是一列数组,也没有问题,只需分割一下就可以,例如

stringtest=5,2,0;

inti=0;

foreach(varitemintest.Split(,))

bs[i++]=int.Parse(item);

而且转换16进制也毫无压力,只需

int.Parse(AB,System.Globalization.NumberStyles.HexNumber);

在C#中,Parse是一种非常统一的函数,诸如int,uint,double等等数据类型,均提供了parse函数,用于将字符串转化为相应的数据类型。

但parse并不安全,若输入参数不符合要求,则会报错,导致程序崩溃,比如把abc转成整数,这个显然是不可能的。所以C#提供了一种不报错的转换方案,即TryParse,其使用方法如下

intintOut;

while(true)

stringstr=Console.ReadLine();

if(int.TryParse(str,outintOut))

Console.WriteLine($您输入了数字{str});

else

Console.WriteLine(输入不合法);

}

效果为

1234

您输入了数字1234

asdf

输入不合法

Convert

在实际应用中,十六进制字符串转字节数组,是十分常见的需求,如果用byte.Parse相对来说比较麻烦,这个时候就需要用到更高级的转换函数Convert了,其调用非常简单,先来演示一下单个值的转换

intintOut=Convert.ToByte(AB,16);

16表示16进制,Convert系列函数,支持2,8,10以及16这几种进制。

Convert中还支持从其他类型转为字符串,仍以十六进制转换为例,下面的代码输出结果为19。

stringstr=Convert.ToString(25,16);

Console.WriteLine(str);

但上面这些单个数值与字符串之间的相互转换,其实并不能看出Convert这个静态类的强大,Convert提供的最方便的功能,其实是字节数组与字符串之间的相互转换,例如

varbs=Convert.FromHexString(6400);

foreach(variteminbs)

Console.WriteLine(item);

其返回结果为

1000

其中0x64即10进制中的100,0x00就是0。

实战

在日常使用中,十六进制字节数组往往被写为0xAA,0xBB这种形式,通过String.Format函数,可以将字节数组输出为这种格式的字符串

stringstr=;

byte[]bs=newbyte[]{1,15,100,127};

foreach(varbinbs)

str+=$0x{b:X},;//$字符串和Format函数语法十分相似

Console.WriteLine(str);

输出结果为

0x01,0x0F,0x64,0x7F,

若想将其恢复为字节数组,则有两种方案,一种是将其分割为字符串数组后,逐个调用byte.Parse,但更好的方法是直接把0x还有,去掉,然后调用FromHexString

str=str.Replace(0x,).Replace(,,);

bs=Convert.FromHexString(str);

foreach(varbinbs)

Console.WriteLine(b);

效果如下

1

15

100

127

总结

文档评论(0)

132****1508 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档