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

 更新时间:2023年06月02日 10:08:58   作者:微小冷  
最近由于编程的需要,对C#的类型转换做了一些研究,下面这篇文章主要给大家介绍了关于C#字符串与数值类型、字节数组的互相转换的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

TryParse

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

string test = "5,2,0";
int i = 0;
foreach(var item in test.Split(','))
    bs[i++] = int.Parse(item);

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

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

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

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

int intOut;
while (true)
{
    string? str = Console.ReadLine();
    if (int.TryParse(str, out intOut))
        Console.WriteLine($"您输入了数字{str}");
    else
        Console.WriteLine("输入不合法");
}

效果为

1234
您输入了数字1234
asdf
输入不合法

Convert

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

int intOut = Convert.ToByte("AB", 16);

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

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

string str = Convert.ToString(25, 16);
Console.WriteLine(str);  

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

var bs = Convert.FromHexString("6400");
foreach (var item in bs)
    Console.WriteLine(item);

其返回结果为

1000

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

实战

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

string str = "";

byte[] bs = new byte[] { 1, 15, 100, 127 };
foreach (var b in bs)
    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 (var b in bs)
    Console.WriteLine(b);

效果如下

1
15
100
127

总结

到此这篇关于C#字符串与数值类型、字节数组的互相转换的文章就介绍到这了,更多相关C#字符串与数值、字节数组互相转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中String和StringBuilder的简介与区别

    C#中String和StringBuilder的简介与区别

    今天小编就为大家分享一篇关于C#中String和StringBuilder的简介与区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • C#播放铃声最简单实现方法

    C#播放铃声最简单实现方法

    这篇文章主要介绍了C#播放铃声最简单实现方法,通过调用系统方法实现播放wav格式音频文件的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • WPF使用Geometry绘制几何图形

    WPF使用Geometry绘制几何图形

    这篇文章介绍了WPF使用Geometry绘制几何图形的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#使用HttpClient对大文件进行断点上传和下载

    C#使用HttpClient对大文件进行断点上传和下载

    这篇文章主要介绍了C#如何使用HttpClient对大文件进行断点上传和下载,文章通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-06-06
  • 详解如何将.NET应用转换成Window服务

    详解如何将.NET应用转换成Window服务

    这篇文章主要为大家详细介绍了如何将.NET8.0应用程序转换成Windows服务,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C#实现截取验证码图片

    C#实现截取验证码图片

    这篇文章主要为大家详细介绍了C#实现截取验证码图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • PowerShell 定时执行.Net(C#)程序的方法

    PowerShell 定时执行.Net(C#)程序的方法

    利用PowerShell可以调用动态页面,然后再用 .bat 执行 PowerShell 脚本,最后把 .bat 添加到服务器的任务计划里面。OK,所有操作都做好了,.Net 定时执行了,是不是呢,有木有呢。
    2013-04-04
  • C# 中的"智能枚举"之如何在枚举中增加行为(示例代码)

    C# 中的"智能枚举"之如何在枚举中增加行为(示例代码)

    这篇文章主要介绍了C# 中的“智能枚举”之如何在枚举中增加行为(示例代码),智能枚举跟设计模式的意义一样,可以帮助您避免重复的代码,并提高代码的可读性和可维护性,需要的朋友可以参考下
    2023-05-05
  • 详细介绍C# 泛型

    详细介绍C# 泛型

    这篇文章主要介绍了C# 泛型的相关资料,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下
    2020-08-08
  • C#利用iTextSharp组件给PDF文档添加图片/文字水印

    C#利用iTextSharp组件给PDF文档添加图片/文字水印

    这篇文章主要给大家介绍了关于如何C#利用iTextSharp组件给PDF文档添加图片/文字水印的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论