C# 16 進制字符串轉 int


最近在寫硬件,發現有一些測試是做 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 ),不得用於商業目的,基於本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我聯系


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM