zoukankan      html  css  js  c++  java
  • 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
        }
    
    
    }
  • 相关阅读:
    FreeCommander 学习手册
    String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
    StringBuffer 详解 (String系列之3)
    StringBuilder 详解 (String系列之2)
    java io系列26之 RandomAccessFile
    java io系列25之 PrintWriter (字符打印输出流)
    java io系列24之 BufferedWriter(字符缓冲输出流)
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
  • 原文地址:https://www.cnblogs.com/zyx321/p/6435891.html
Copyright © 2011-2022 走看看