zoukankan      html  css  js  c++  java
  • 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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

  • 相关阅读:
    基于SAAJ的客户端
    SOAP消息的结构
    服务端的思考
    最简单的Web Service实现
    PLSQL的注释技巧
    复杂分支图示
    Tomcat常见错误
    maven常见错误
    SpringMvc参数传递中乱码问题
    springmvc常遇到的错误
  • 原文地址:https://www.cnblogs.com/lindexi/p/12087162.html
Copyright © 2011-2022 走看看