推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

十六进制串转数组的转换方案,你知道吗?

   2023-06-17 网络整理佚名1900
核心提示:14之类的字符串转为对应数据类型的数值,只需要int.在实际应用中,十六进制字符串转字节数组,是十分常见的需求,如果用byte.中还支持从其他类型转为字符串,仍以十六进制转换为例,下面的代码输出结果为19。但上面这些单个数值与字符串之间的相互转换,其实并不能看出这个静态类的强大,提供的最方便的功能,其实是字节数组与字符串之间的相互转换,例如函数,可以将字节数组输出为这种格式的字符串

文章目录

通常情况下,如果要将1024或者3.14这样的字符串转换成对应数据类型的值,只需要int.Parse或者.Parse就可以了。如果输入是数组,没有问题,分一下就可以了,例如

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

而且没有转换十六进制的压力,只是

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

在C#中,Parse是一个非常统一的函数。 int、uint等数据类型都提供parse函数,将字符串转换成对应的数据类型。

但是解析并不安全。 如果输入的参数不符合要求,就会报错,程序会崩溃。 比如将abc转换成整数显然是不可能的。所以C#提供了一种不报错的转换方案,即它的用法如下

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

效果是

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

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

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

16表示十六进制,一系列函数,支持2、8、10、16。

它还支持从其他类型到字符串的转换。 仍然以十六进制转换为例,以下代码输出为19。

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

不过上面这些单个值和字符串之间的转换其实并没有体现出这个静态类的强大,提供的最方便的功能其实就是字节数组和字符串之间的转换,例如

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

它的返回结果是

100
0

其中0x64十进制为100,0x00为0。

战斗

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

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,然后调用

str = str.Replace("0x", "").Replace(",", "");
bs = Convert.FromHexString(str) ;
foreach (var b in bs)
    Console.WriteLine(b);

效果如下

1
15
100
127

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON