最近在寫硬件,發現有一些測試是做 16 進制的字符串,需要把他轉換為整形才可以處理。
本文告訴大家如何從 16 進制轉整形
如果輸入的是 0xaa 這時轉換 int 不能使用 Parse 不然會出現異常
System.FormatException
如果需要轉換十六進制就需要使用 Convert 才可以轉換
Convert.ToInt32("0xaa", 16)
使用這個方法才可以轉換。實際使用這個方法轉換不一定需要添加0x,直接使用aa也是可以
Convert.ToInt32("0xaa", 16) == Convert.ToInt32("aa", 16)
我需要轉換的是一個字符串,里面有很多數值,所以我就使用下面的方法。
如果輸入的字符串是這個樣子
var str =
"AA BB CC 12 01 0D 00 34 38 34 35 32 30 41 35 33 46 37 30 2C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A";
那么就需要先添加 0x 然后再轉換,使用下面一句話可以轉數組
var command = str.Split(' ').Select(temp => "0x" + temp).Select(temp => (byte) Convert.ToInt32(temp, 16))
.ToArray();
這個方法大家可以直接拿去使用。
如果輸入沒有帶0x那么另一個方法是 int.Parse ,因為這個方法可以設置如何轉換,注意需要不帶0x如果帶了就出現異常
int.Parse("aa", System.Globalization.NumberStyles.HexNumber)
How to: Convert Between Hexadecimal Strings and Numeric Types
我搭建了自己的博客 https://lindexi.gitee.io/ 歡迎大家訪問,里面有很多新的博客。只有在我看到博客寫成熟之后才會放在csdn或博客園,但是一旦發布了就不再更新
如果在博客看到有任何不懂的,歡迎交流,我搭建了 dotnet 職業技術學院 歡迎大家加入

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我聯系。
