• ConvertHex.cs(20170223)


    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace System.CRM.Common
    {
        /// <summary>
        /// 进制转换
        /// </summary>
        public class ConvertHex
        {
            #region 非自定义
    
            /// <summary>
            /// 十进制转换为二进制
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            public static string DecToBin(string x)
            {
                string z = null;
                int X = Convert.ToInt32(x);
                int i = 0;
                long a, b = 0;
                while (X > 0)
                {
                    a = X % 2;
                    X = X / 2;
                    b = b + a * Pow(10, i);
                    i++;
                }
                z = Convert.ToString(b);
                return z;
            }
    
            /// <summary>
            /// 16进制转ASCII码
            /// </summary>
            /// <param name="hexString"></param>
            /// <returns></returns>
            public static string HexToAscii(string hexString)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i <= hexString.Length - 2; i += 2)
                {
                    sb.Append(
                        Convert.ToString(
                            Convert.ToChar(Int32.Parse(hexString.Substring(i, 2),
                                                       System.Globalization.NumberStyles.HexNumber))));
                }
                return sb.ToString();
            }
    
            /// <summary>
            /// 十进制转换为八进制
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            public static string DecToOtc(string x)
            {
                string z = null;
                int X = Convert.ToInt32(x);
                int i = 0;
                long a, b = 0;
                while (X > 0)
                {
                    a = X % 8;
                    X = X / 8;
                    b = b + a * Pow(10, i);
                    i++;
                }
                z = Convert.ToString(b);
                return z;
            }
    
            /// <summary>
            /// 十进制转换为十六进制
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            public static string DecToHex(string x)
            {
                if (string.IsNullOrEmpty(x))
                {
                    return "0";
                }
                string z = null;
                int X = Convert.ToInt32(x);
                Stack a = new Stack();
                int i = 0;
                while (X > 0)
                {
                    a.Push(Convert.ToString(X % 16));
                    X = X / 16;
                    i++;
                }
                while (a.Count != 0)
                    z += ToHex(Convert.ToString(a.Pop()));
                if (string.IsNullOrEmpty(z))
                {
                    z = "0";
                }
                return z;
            }
    
            /// <summary>
            /// 二进制转换为十进制
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            public static string BinToDec(string x)
            {
                string z = null;
                int X = Convert.ToInt32(x);
                int i = 0;
                long a, b = 0;
                while (X > 0)
                {
                    a = X % 10;
                    X = X / 10;
                    b = b + a * Pow(2, i);
                    i++;
                }
                z = Convert.ToString(b);
                return z;
            }
    
            /// <summary>
            /// 二进制转换为十进制,定长转换
            /// </summary>
            /// <param name="x"></param>
            /// <param name="iLength"></param>
            /// <returns></returns>
            public static string BinToDec(string x, short iLength)
            {
                StringBuilder sb = new StringBuilder();
                int iCount = 0;
    
                iCount = x.Length / iLength;
    
                if (x.Length % iLength > 0)
                {
                    iCount += 1;
                }
    
                int X = 0;
    
                for (int i = 0; i < iCount; i++)
                {
                    if ((i + 1) * iLength > x.Length)
                    {
                        X = Convert.ToInt32(x.Substring(i * iLength, (x.Length - iLength)));
                    }
                    else
                    {
                        X = Convert.ToInt32(x.Substring(i * iLength, iLength));
                    }
                    int j = 0;
                    long a, b = 0;
                    while (X > 0)
                    {
                        a = X % 10;
                        X = X / 10;
                        b = b + a * Pow(2, j);
                        j++;
                    }
                    sb.AppendFormat("{0:D2}", b);
                }
                return sb.ToString();
            }
    
            /// <summary>
            /// 二进制转换为十六进制,定长转换
            /// </summary>
            /// <param name="x"></param>
            /// <param name="iLength"></param>
            /// <returns></returns>
            public static string BinToHex(string x, short iLength)
            {
                StringBuilder sb = new StringBuilder();
                int iCount = 0;
    
                iCount = x.Length / iLength;
    
                if (x.Length % iLength > 0)
                {
                    iCount += 1;
                }
    
                int X = 0;
    
                for (int i = 0; i < iCount; i++)
                {
                    if ((i + 1) * iLength > x.Length)
                    {
                        X = Convert.ToInt32(x.Substring(i * iLength, (x.Length - iLength)));
                    }
                    else
                    {
                        X = Convert.ToInt32(x.Substring(i * iLength, iLength));
                    }
                    int j = 0;
                    long a, b = 0;
                    while (X > 0)
                    {
                        a = X % 10;
                        X = X / 10;
                        b = b + a * Pow(2, j);
                        j++;
                    }
                    //前补0
                    sb.Append(DecToHex(b.ToString()));
                }
                return sb.ToString();
            }
    
            /// <summary>
            /// 八进制转换为十进制
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            public static string OctToDec(string x)
            {
                string z = null;
                int X = Convert.ToInt32(x);
                int i = 0;
                long a, b = 0;
                while (X > 0)
                {
                    a = X % 10;
                    X = X / 10;
                    b = b + a * Pow(8, i);
                    i++;
                }
                z = Convert.ToString(b);
                return z;
            }
    
    
            /// <summary>
            /// 十六进制转换为十进制
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            public static string HexToDec(string x)
            {
                if (string.IsNullOrEmpty(x))
                {
                    return "0";
                }
                string z = null;
                Stack a = new Stack();
                int i = 0, j = 0, l = x.Length;
                long Tong = 0;
                while (i < l)
                {
                    a.Push(ToDec(Convert.ToString(x[i])));
                    i++;
                }
                while (a.Count != 0)
                {
                    Tong = Tong + Convert.ToInt64(a.Pop()) * Pow(16, j);
                    j++;
                }
                z = Convert.ToString(Tong);
                return z;
            }
    
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <returns></returns>
            private static long Pow(long x, long y)
            {
                int i = 1;
                long X = x;
                if (y == 0)
                    return 1;
                while (i < y)
                {
                    x = x * X;
                    i++;
                }
                return x;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            private static string ToDec(string x)
            {
                switch (x)
                {
                    case "A":
                        return "10";
                    case "B":
                        return "11";
                    case "C":
                        return "12";
                    case "D":
                        return "13";
                    case "E":
                        return "14";
                    case "F":
                        return "15";
                    default:
                        return x;
                }
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="x"></param>
            /// <returns></returns>
            private static string ToHex(string x)
            {
                switch (x)
                {
                    case "10":
                        return "A";
                    case "11":
                        return "B";
                    case "12":
                        return "C";
                    case "13":
                        return "D";
                    case "14":
                        return "E";
                    case "15":
                        return "F";
                    default:
                        return x;
                }
            }
    
            /// <summary>
            /// 将16进制BYTE数组转换成16进制字符串
            /// </summary>
            /// <param name="bytes"></param>
            /// <returns></returns>
            public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
            {
                string hexString = string.Empty;
                if (bytes != null)
                {
                    StringBuilder strB = new StringBuilder();
    
                    for (int i = 0; i < bytes.Length; i++)
                    {
                        strB.Append(bytes[i].ToString("X2"));
                    }
                    hexString = strB.ToString();
                }
                return hexString;
            }
    
    
            #endregion
    
    
            #region 自定义
    
    
            #endregion
        }
    
    
    }
  • 相关阅读:
    系统调用的三层机制(上)
    深入理解计算机系统——第二章学习笔记
    MenOS
    操作系统工作流程
    从问题到程序——第一二章学习笔记
    2018-2019-1 20189210 《LInux内核原理与分析》第六周作业
    2018-2019-1 20189210 《LInux内核原理与分析》第五周作业
    2018-2019-1 20189210 《LInux内核原理与分析》第四周作业
    2018-2019-1 20189210 《Linux内核原理与分析》第三周作业
    20189210牟健 《Linux内核原理与分析》第二周作业
  • 原文地址:https://www.cnblogs.com/zyx321/p/6435891.html
Copyright © 2020-2023  润新知