C#字符串與數(shù)值類型、字節(jié)數(shù)組的互相轉(zhuǎn)換實(shí)戰(zhàn)案例
TryParse
正常來說,想把類似1024
或者3.14
之類的字符串轉(zhuǎn)為對(duì)應(yīng)數(shù)據(jù)類型的數(shù)值,只需要int.Parse
或double.Parse
就可以了。如果輸入的是一列數(shù)組,也沒有問題,只需分割一下就可以,例如
string test = "5,2,0"; int i = 0; foreach(var item in test.Split(',')) bs[i++] = int.Parse(item);
而且轉(zhuǎn)換16進(jìn)制也毫無壓力,只需
int.Parse("AB", System.Globalization.NumberStyles.HexNumber);
在C#中,Parse
是一種非常統(tǒng)一的函數(shù),諸如int, uint, double
等等數(shù)據(jù)類型,均提供了parse
函數(shù),用于將字符串轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)類型。
但parse
并不安全,若輸入?yún)?shù)不符合要求,則會(huì)報(bào)錯(cuò),導(dǎo)致程序崩潰,比如把abc
轉(zhuǎn)成整數(shù),這個(gè)顯然是不可能的。所以C#
提供了一種不報(bào)錯(cuò)的轉(zhuǎn)換方案,即TryParse
,其使用方法如下
int intOut; while (true) { string? str = Console.ReadLine(); if (int.TryParse(str, out intOut)) Console.WriteLine($"您輸入了數(shù)字{str}"); else Console.WriteLine("輸入不合法"); }
效果為
1234
您輸入了數(shù)字1234
asdf
輸入不合法
Convert
在實(shí)際應(yīng)用中,十六進(jìn)制字符串轉(zhuǎn)字節(jié)數(shù)組,是十分常見的需求,如果用byte.Parse
相對(duì)來說比較麻煩,這個(gè)時(shí)候就需要用到更高級(jí)的轉(zhuǎn)換函數(shù)Convert
了,其調(diào)用非常簡(jiǎn)單,先來演示一下單個(gè)值的轉(zhuǎn)換
int intOut = Convert.ToByte("AB", 16);
16表示16進(jìn)制,Convert
系列函數(shù),支持2, 8, 10以及16這幾種進(jìn)制。
Convert
中還支持從其他類型轉(zhuǎn)為字符串,仍以十六進(jìn)制轉(zhuǎn)換為例,下面的代碼輸出結(jié)果為19。
string str = Convert.ToString(25, 16); Console.WriteLine(str);
但上面這些單個(gè)數(shù)值與字符串之間的相互轉(zhuǎn)換,其實(shí)并不能看出Convert
這個(gè)靜態(tài)類的強(qiáng)大,Convert
提供的最方便的功能,其實(shí)是字節(jié)數(shù)組與字符串之間的相互轉(zhuǎn)換,例如
var bs = Convert.FromHexString("6400"); foreach (var item in bs) Console.WriteLine(item);
其返回結(jié)果為
1000
其中0x64
即10進(jìn)制中的100,0x00
就是0。
實(shí)戰(zhàn)
在日常使用中,十六進(jìn)制字節(jié)數(shù)組往往被寫為0xAA, 0xBB
這種形式,通過String.Format
函數(shù),可以將字節(jié)數(shù)組輸出為這種格式的字符串
string str = ""; byte[] bs = new byte[] { 1, 15, 100, 127 }; foreach (var b in bs) str += $"0x{b:X},"; // $字符串和Format函數(shù)語(yǔ)法十分相似 Console.WriteLine(str);
輸出結(jié)果為
0x01,0x0F,0x64,0x7F,
若想將其恢復(fù)為字節(jié)數(shù)組,則有兩種方案,一種是將其分割為字符串?dāng)?shù)組后,逐個(gè)調(diào)用byte.Parse
,但更好的方法是直接把0x
還有,
去掉,然后調(diào)用FromHexString
str = str.Replace("0x", "").Replace(",", ""); bs = Convert.FromHexString(str) ; foreach (var b in bs) Console.WriteLine(b);
效果如下
1
15
100
127
總結(jié)
到此這篇關(guān)于C#字符串與數(shù)值類型、字節(jié)數(shù)組的互相轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)C#字符串與數(shù)值、字節(jié)數(shù)組互相轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#利用正則表達(dá)式實(shí)現(xiàn)獲取字符串中漢字的數(shù)量
這篇文章主要為大家詳細(xì)介紹了C#如何利用正則表達(dá)式實(shí)現(xiàn)獲取字符串中漢字的數(shù)量,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01C#使用itextsharp打印pdf的實(shí)現(xiàn)代碼
提到打印,恐怕對(duì)于很多人都不會(huì)陌生,無論是開發(fā)者,還是非計(jì)算機(jī)專業(yè)的人員都會(huì)接觸到打印,?在.NET中實(shí)現(xiàn)PDF打印的組件比較多,例如PDFsharp、Report.NET、sharpPDF、itextSharp等等,今天主要簡(jiǎn)單的介紹itextSharp組件,需要的朋友可以參考下2024-04-04C#實(shí)現(xiàn)OFD格式與PDF格式的互轉(zhuǎn)
OFD格式的文檔是一種我國(guó)獨(dú)有的國(guó)家標(biāo)準(zhǔn)版式的文檔。本文將通過C#程序介紹如何實(shí)現(xiàn)由OFD與PDF的互相轉(zhuǎn)換,感興趣的小伙伴可以了解一下2022-02-02C#微信公眾平臺(tái)開發(fā)之a(chǎn)ccess_token的獲取存儲(chǔ)與更新
這篇文章主要介紹了C#微信公眾平臺(tái)開發(fā)之a(chǎn)ccess_token的獲取存儲(chǔ)與更新的相關(guān)資料,需要的朋友可以參考下2016-03-03C# newtonsoft.json中文亂碼問號(hào)的解決方案
這篇文章主要介紹了C# newtonsoft.json中文亂碼問號(hào)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07C#單例模式(Singleton Pattern)實(shí)例教程
這篇文章主要介紹了C#單例模式(Singleton Pattern)的實(shí)現(xiàn)方法,主要講述了即時(shí)加載的單例模式、延遲加載的單例模式與線程安全的單例模式,需要的朋友可以參考下2014-09-09