博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中,将16进制转换为有符号的10进制的方法(支持带0x标志,支持任意字符串)
阅读量:4677 次
发布时间:2019-06-09

本文共 884 字,大约阅读时间需要 2 分钟。

        /// <summary>

        /// 将16进制转换为有符号的10进制
        /// </summary>
        /// <param name="hexstr"></param>
        /// <returns></returns>
        public string ConvertHexToSIntStr(string hexstr)
        {

    if (hexstr.StartsWith("0x"))

            {
                hexstr = hexstr.Substring(2);
            }

    //如果不是有效的16进制字符串或者字符串长度大于16或者是空,均返回NULL

   if (!IsHexadecimal(hexstr) || hexstr.Length > 16 || string.IsNullOrEmpty(hexstr))

            {
                return null;
            }
            if (hexstr.Length > 8)
            {
                return Convert.ToInt64(hexstr, 16).ToString();
            }
            else  if (hexstr.Length > 4)
            {
                return Convert.ToInt32(hexstr, 16).ToString();
            }
            else
            {
                return Convert.ToInt16(hexstr, 16).ToString();
            }
        }
        /// <summary>
        /// 判断是否是十六进制格式字符串
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public bool IsHexadecimal(string str)
        {
            const string PATTERN = @"[A-Fa-f0-9]+$";
            return System.Text.RegularExpressions.Regex.IsMatch(str, PATTERN);
        }

转载于:https://www.cnblogs.com/CFive/p/8186733.html

你可能感兴趣的文章
「Linux」VMware安装centos7(一)
查看>>
Java中模拟POST上传文件
查看>>
Ubuntu 中sendmail 的安装、配置与发送邮件的具体实现
查看>>
时隔2月,我的第二篇
查看>>
[导入]C++ OpenGL底层和C# GUI无缝联合!
查看>>
调试程序Bug-陈棚
查看>>
STM32 寄存器库和固件库
查看>>
第11周表格
查看>>
linux运维云计算课程学习,Linux云计算面试时遇到的问题
查看>>
Abiword对话框资源
查看>>
跟我一起写 Makefile
查看>>
C# uri
查看>>
GPS定位 测试
查看>>
前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查
查看>>
探索从 MVC 到 MVVM + Flux 架构模式的转变
查看>>
tornado的异步效果
查看>>
*2.3.2_加入env
查看>>
JS中SetTimeOut和SetInterval方法的区别?
查看>>
Protocol Buffers proto语言语法说明
查看>>
Hibernate双向一对一对象关系模型映射
查看>>