হেক্সাডেসিমাল এবং দশমিকের মধ্যে সংখ্যাগুলি কীভাবে রূপান্তর করবেন


উত্তর:


281

দশমিক থেকে হেক্স ডোতে রূপান্তর করতে ...

string hexValue = decValue.ToString("X");

হেক্স থেকে দশমিক রূপান্তর করতে হয় হয় ...

int decValue = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

অথবা

int decValue = Convert.ToInt32(hexValue, 16);

1
আমি বুঝতে চাই যে এই লাইনটি কীভাবে ডেকভ্যালু T টুস্ট্রিং ("এক্স") এটিকে হেক্সে রূপান্তর করে।
gizgok

20
ভেরিয়েবল ডিকভালু টাইপটি ইন্টার 32 রয়েছে। ইন্ট 32 এর একটি টসস্ট্রিং () ওভারলোড রয়েছে যা সংখ্যক ফর্ম্যাট স্ট্রিংগুলির মধ্যে একটি গ্রহণ করতে পারে যা নির্ধারণ করে যে মানটি কীভাবে স্ট্রিং হিসাবে উপস্থাপন করা হবে। "এক্স" ফর্ম্যাট স্ট্রিংটির অর্থ হেক্সিডিসিমাল তাই 255. টুস্ট্রিং ("এক্স") হেক্সাডেসিমাল স্ট্রিং "এফএফ" প্রদান করবে। আরও তথ্যের জন্য দেখুন এমএসডিএন.মাইক্রোসফটকম /en-us/library/dwhawy9k.aspx
অ্যান্ডি ম্যাকক্লাগেজ

2
ভাল উত্তর. বিরক্তিকর চেষ্টা ক্যাচ ব্লকটি ব্যবহার না করে এ জন্য আমি আসলে int.TryParse ব্যবহার করছি int.Pars এর পরিবর্তে।
আরএফএলডব্লিউটাইম

9
@ ভ্যাডিমস্টেটিসিয়াক কনভার্ট করুন o টু আইন্ট 32 কেবল ইনট 32. পার্স (আন্তঃ পার্স) (মুখের তালু)
কল করুন

@ কোল জোনসনের int.Parseকাছে আপনার ভিত্তিটিকে intকয়েকটি হিসাবে বৈধের মতো নির্দিষ্ট করার জন্য কোনও বিকল্প নেই NumberStyles। বেস 16 এর জন্য, হয় কেবল ঠিক আছে, তবে সাধারণ সমাধান হিসাবে, উভয় কীভাবে কাজ করে তা জেনে রাখা ভাল।
টিম এস

54

হেক্স -> দশমিক:

Convert.ToInt64(hexValue, 16);

দশমিক -> হেক্স

string.format("{0:x}", decValue);

6
+1 সম্পর্কে সুন্দর জিনিসটি Convert.ToInt64(hexValue, 16);হ'ল 0xউপসর্গটি আছে বা না থাকলে এটি রূপান্তরটি করবে , অন্যদিকে কিছু সমাধানও তা করবে না।
ক্রেগ

@ ক্রেইগ হাই, সুতরাং আমাকে হেক্স মানের আকারের উপর ভিত্তি করে রূপান্তরটি করতে হবে বা আমি সমস্ত হেক্স মানের জন্য ToInt64 প্রয়োগ করতে পারি, কোন প্রভাব আছে কি?
ব্যবহারকারী 1219310

26

দেখে মনে হচ্ছে আপনি বলতে পারেন

Convert.ToInt64(value, 16)

হেক্সডেসিমাল থেকে দশমিক পেতে

চারপাশের অন্য উপায়টি হ'ল:

otherVar.ToString("X");

আমি System.FormatException পাবেন: নির্দিষ্ট বিন্যাস 'X অবৈধ
c_Reg_c_Lark

13

হেক্স থেকে দশমিক সংখ্যায় রূপান্তর করার সময় আপনি যদি সর্বাধিক কর্মক্ষমতা চান তবে আপনি হেক্স-থেকে-দশমিক মানের প্রাক-জনবহুল সারণির সাহায্যে পদ্ধতির ব্যবহার করতে পারেন।

কোডটি এখানে সেই ধারণাটি চিত্রিত করে। আমার পারফরম্যান্স পরীক্ষাগুলি প্রমাণ করেছে যে এটি কনভার্ট.টোইন্ট 32 (...) এর চেয়ে 20% -40% দ্রুত হতে পারে:

class TableConvert
  {
      static sbyte[] unhex_table =
      { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
       ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
       ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
       , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1
       ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
       ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
       ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
       ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
      };

      public static int Convert(string hexNumber)
      {
          int decValue = unhex_table[(byte)hexNumber[0]];
          for (int i = 1; i < hexNumber.Length; i++)
          {
              decValue *= 16;
              decValue += unhex_table[(byte)hexNumber[i]];
          }
          return decValue;
      }
  }

জিনিয়াস! আশ্চর্য কি যদি বাইট সংকলকটি স্বয়ংক্রিয়ভাবে কনভার্ট.টোইন্ট 32 এর মধ্যে এই পদ্ধতির ব্যবহার করতে সক্ষম হয়?
জেফ হালভারসন

1
এটি করা যায় না এমন কোনও কারণ আমি দেখছি না। তবে অ্যারে বজায় রাখা অতিরিক্ত মেমরি গ্রাস করবে।
ভডিয়াম স্টেসিয়াক

8

গিকপিডিয়া থেকে :

// Store integer 182
int decValue = 182;

// Convert integer 182 as a hex in a string variable
string hexValue = decValue.ToString("X");

// Convert the hex string back to the number
int decAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

আমি কয়েক মিনিটের মধ্যে ছোট ডটনেট app.০ অ্যাপ তৈরি করতে এই পদ্ধতিটি ব্যবহার করেছি, কয়েক লাইনের কোড দিয়ে দুর্দান্ত কাজ করে।
রাইটারলজিকাল

2
String stringrep = myintvar.ToString("X");

int num = int.Parse("FF", System.Globalization.NumberStyles.HexNumber);

2

হেক্স থেকে দশমিক রূপান্তর

Convert.ToInt32(number, 16);

দশমিক থেকে হেক্স রূপান্তর

int.Parse(number, System.Globalization.NumberStyles.HexNumber)

আরও তথ্যের জন্য এই নিবন্ধটি পরীক্ষা করুন


এটি এই উত্তরের পুনরাবৃত্তি বলে মনে হচ্ছে ।
পাইং

1
    static string chex(byte e)                  // Convert a byte to a string representing that byte in hexadecimal
    {
        string r = "";
        string chars = "0123456789ABCDEF";
        r += chars[e >> 4];
        return r += chars[e &= 0x0F];
    }           // Easy enough...

    static byte CRAZY_BYTE(string t, int i)     // Take a byte, if zero return zero, else throw exception (i=0 means false, i>0 means true)
    {
        if (i == 0) return 0;
        throw new Exception(t);
    }

    static byte hbyte(string e)                 // Take 2 characters: these are hex chars, convert it to a byte
    {                                           // WARNING: This code will make small children cry. Rated R.
        e = e.ToUpper(); // 
        string msg = "INVALID CHARS";           // The message that will be thrown if the hex str is invalid

        byte[] t = new byte[]                   // Gets the 2 characters and puts them in seperate entries in a byte array.
        {                                       // This will throw an exception if (e.Length != 2).
            (byte)e[CRAZY_BYTE("INVALID LENGTH", e.Length ^ 0x02)], 
            (byte)e[0x01] 
        };

        for (byte i = 0x00; i < 0x02; i++)      // Convert those [ascii] characters to [hexadecimal] characters. Error out if either character is invalid.
        {
            t[i] -= (byte)((t[i] >= 0x30) ? 0x30 : CRAZY_BYTE(msg, 0x01));                                  // Check for 0-9
            t[i] -= (byte)((!(t[i] < 0x0A)) ? (t[i] >= 0x11 ? 0x07 : CRAZY_BYTE(msg, 0x01)) : 0x00);        // Check for A-F
        }           

        return t[0x01] |= t[0x00] <<= 0x04;     // The moment of truth.
    }

1

এটি সত্যই সহজতম উপায় নয় তবে এই উত্স কোডটি আপনাকে কোনও ধরণের অষ্টাল সংখ্যা যেমন 23.214, 23 এবং 0.512 ইত্যাদি ঠিক করতে সক্ষম করে। আশা করি এটা তোমাকে সাহায্য করবে..

    public string octal_to_decimal(string m_value)
    {
        double i, j, x = 0;
        Int64 main_value;
        int k = 0;
        bool pw = true, ch;
        int position_pt = m_value.IndexOf(".");
        if (position_pt == -1)
        {
            main_value = Convert.ToInt64(m_value);
            ch = false;
        }
        else
        {
            main_value = Convert.ToInt64(m_value.Remove(position_pt, m_value.Length - position_pt));
            ch = true;
        }

        while (k <= 1)
        {
            do
            {
                i = main_value % 10;                                        // Return Remainder
                i = i * Convert.ToDouble(Math.Pow(8, x));                   // calculate power
                if (pw)
                    x++;
                else
                    x--;
                o_to_d = o_to_d + i;                                        // Saving Required calculated value in main variable
                main_value = main_value / 10;                               // Dividing the main value 
            }
            while (main_value >= 1);
            if (ch)
            {
                k++;
                main_value = Convert.ToInt64(Reversestring(m_value.Remove(0, position_pt + 1)));
            }
            else
                k = 2;
            pw = false;
            x = -1;
        }
        return (Convert.ToString(o_to_d));
    }    

2
স্ট্যাকওভারফ্লোতে স্বাগতম আপনি কি দয়া করে কিছুটা আপনার কোডটি ব্যাখ্যা করতে পারেন (মাইবি মাত্র একটি ছোট বাক্য)। ধন্যবাদ!
ড্যানিয়েল বি

1

সি # তে বিগনম্বার ব্যবহার করে দেখুন - একটি নির্বিচারে বড় স্বাক্ষরিত পূর্ণসংখ্যার প্রতিনিধিত্ব করে।

কার্যক্রম

using System.Numerics;
...
var bigNumber = BigInteger.Parse("837593454735734579347547357233757342857087879423437472347757234945743");
Console.WriteLine(bigNumber.ToString("X"));

আউটপুট

4F30DC39A5B10A824134D5B18EEA3707AC854EE565414ED2E498DCFDE1A15DA5FEB6074AE248458435BD417F06F674EB29A2CFECF

সম্ভাব্য ব্যতিক্রম,

আর্গুমেন্টনাল এক্সসেপশন - মান শূন্য।

ফর্ম্যাটেক্সেপশন - মানটি সঠিক ফর্ম্যাটে নেই।

উপসংহার

আপনি স্ট্রিংটি রূপান্তর করতে পারেন এবং সংখ্যাটির আকার সম্পর্কে সীমাবদ্ধতা ছাড়াই বিগনম্বরে একটি মান সঞ্চয় করতে পারেন যদি না স্ট্রিংটি খালি এবং অ-অ্যানালফেটগুলি না থাকে


0

যদি এটি সাধারণ পূর্ণসংখ্যার ধারণক্ষমতা ছাড়িয়ে সত্যিই বড় হেক্স স্ট্রিং থাকে:

.NET 3.5 এর জন্য, আমরা বাউন্সিস্টলের বিগইন্টিজার ক্লাসটি ব্যবহার করতে পারি:

String hex = "68c7b05d0000000002f8";
// results in "494809724602834812404472"
String decimal = new Org.BouncyCastle.Math.BigInteger(hex, 16).ToString();

.NET 4.0 এর মধ্যে বিগইন্টেজার ক্লাস রয়েছে।


0

আমার সংস্করণটি হ'ল আমি আরও বেশি বোধগম্য বলে মনে করি কারণ আমার সি # জ্ঞান এত বেশি নয়। আমি এই অ্যালগরিদমটি ব্যবহার করছি: http://easyguyevo.hubpages.com/hub/Convers-Hex-to-Decimal (উদাহরণ 2)

using System;
using System.Collections.Generic;

static class Tool
{
    public static string DecToHex(int x)
    {
        string result = "";

        while (x != 0)
        {
            if ((x % 16) < 10)
                result = x % 16 + result;
            else
            {
                string temp = "";

                switch (x % 16)
                {
                    case 10: temp = "A"; break;
                    case 11: temp = "B"; break;
                    case 12: temp = "C"; break;
                    case 13: temp = "D"; break;
                    case 14: temp = "E"; break;
                    case 15: temp = "F"; break;
                }

                result = temp + result;
            }

            x /= 16;
        }

        return result;
    }

    public static int HexToDec(string x)
    {
        int result = 0;
        int count = x.Length - 1;
        for (int i = 0; i < x.Length; i++)
        {
            int temp = 0;
            switch (x[i])
            {
                case 'A': temp = 10; break;
                case 'B': temp = 11; break;
                case 'C': temp = 12; break;
                case 'D': temp = 13; break;
                case 'E': temp = 14; break;
                case 'F': temp = 15; break;
                default: temp = -48 + (int)x[i]; break; // -48 because of ASCII
            }

            result += temp * (int)(Math.Pow(16, count));
            count--;
        }

        return result;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Enter Decimal value: ");
        int decNum = int.Parse(Console.ReadLine());

        Console.WriteLine("Dec {0} is hex {1}", decNum, Tool.DecToHex(decNum));

        Console.Write("\nEnter Hexadecimal value: ");
        string hexNum = Console.ReadLine().ToUpper();

        Console.WriteLine("Hex {0} is dec {1}", hexNum, Tool.HexToDec(hexNum));

        Console.ReadKey();
    }
}

0

বাইনারি কে হেক্সে রূপান্তর করুন

Convert.ToString(Convert.ToUInt32(binary1, 2), 16).ToUpper()

-1

বাইট অ্যারেটিকে হেক্স উপস্থাপনায় রূপান্তর করার জন্য একটি এক্সটেনশন পদ্ধতি। নেতৃস্থানীয় শূন্যগুলির সাথে প্রতিটি বাইট প্যাড করে।

    /// <summary>
    /// Turns the byte array into its Hex representation.
    /// </summary>
    public static string ToHex(this byte[] y)
    {
        StringBuilder sb = new StringBuilder();
        foreach (byte b in y)
        {
            sb.Append(b.ToString("X").PadLeft(2, "0"[0]));
        }
        return sb.ToString();
    }

-1

এখানে আমার ফাংশন:

using System;
using System.Collections.Generic;
class HexadecimalToDecimal
{
    static Dictionary<char, int> hexdecval = new Dictionary<char, int>{
        {'0', 0},
        {'1', 1},
        {'2', 2},
        {'3', 3},
        {'4', 4},
        {'5', 5},
        {'6', 6},
        {'7', 7},
        {'8', 8},
        {'9', 9},
        {'a', 10},
        {'b', 11},
        {'c', 12},
        {'d', 13},
        {'e', 14},
        {'f', 15},
    };

    static decimal HexToDec(string hex)
    {
        decimal result = 0;
        hex = hex.ToLower();

        for (int i = 0; i < hex.Length; i++)
        {
            char valAt = hex[hex.Length - 1 - i];
            result += hexdecval[valAt] * (int)Math.Pow(16, i);
        }

        return result;
    }

    static void Main()
    {

        Console.WriteLine("Enter Hexadecimal value");
        string hex = Console.ReadLine().Trim();

        //string hex = "29A";
        Console.WriteLine("Hex {0} is dec {1}", hex, HexToDec(hex));

        Console.ReadKey();
    }
}

এটি কোনও Convertএক্সটেনশন পদ্ধতির জন্য একজন ভাল প্রার্থী হতে পারে যাতে কেউ লিখতে পারেন: int hexa = Convert.ToHexadecimal(11);=)
উইল মার্কোইলার

-1

আমার সমাধানটি কিছুটা বেসিকের মতো, তবে সংখ্যা সিস্টেমের মধ্যে রূপান্তর করতে কোনও বিল্ট-ইন ফাংশন ব্যবহার না করে এটি কাজ করে।

    public static string DecToHex(long a)
    {
        int n = 1;
        long b = a;
        while (b > 15)
        {
            b /= 16;
            n++;
        }
        string[] t = new string[n];
        int i = 0, j = n - 1;
        do
        {
                 if (a % 16 == 10) t[i] = "A";
            else if (a % 16 == 11) t[i] = "B";
            else if (a % 16 == 12) t[i] = "C";
            else if (a % 16 == 13) t[i] = "D";
            else if (a % 16 == 14) t[i] = "E";
            else if (a % 16 == 15) t[i] = "F";
            else t[i] = (a % 16).ToString();
            a /= 16;
            i++;
        }
        while ((a * 16) > 15);
        string[] r = new string[n];
        for (i = 0; i < n; i++)
        {
            r[i] = t[j];
            j--;
        }
        string res = string.Concat(r);
        return res;
    }

-1
class HexToDecimal
{
    static void Main()
    {
        while (true)
        {
            Console.Write("Enter digit number to convert: ");
            int n = int.Parse(Console.ReadLine()); // set hexadecimal digit number  
            Console.Write("Enter hexadecimal number: ");
            string str = Console.ReadLine();
            str.Reverse();

            char[] ch = str.ToCharArray();
            int[] intarray = new int[n];

            decimal decimalval = 0;

            for (int i = ch.Length - 1; i >= 0; i--)
            {
                if (ch[i] == '0')
                    intarray[i] = 0;
                if (ch[i] == '1')
                    intarray[i] = 1;
                if (ch[i] == '2')
                    intarray[i] = 2;
                if (ch[i] == '3')
                    intarray[i] = 3;
                if (ch[i] == '4')
                    intarray[i] = 4;
                if (ch[i] == '5')
                    intarray[i] = 5;
                if (ch[i] == '6')
                    intarray[i] = 6;
                if (ch[i] == '7')
                    intarray[i] = 7;
                if (ch[i] == '8')
                    intarray[i] = 8;
                if (ch[i] == '9')
                    intarray[i] = 9;
                if (ch[i] == 'A')
                    intarray[i] = 10;
                if (ch[i] == 'B')
                    intarray[i] = 11;
                if (ch[i] == 'C')
                    intarray[i] = 12;
                if (ch[i] == 'D')
                    intarray[i] = 13;
                if (ch[i] == 'E')
                    intarray[i] = 14;
                if (ch[i] == 'F')
                    intarray[i] = 15;

                decimalval += intarray[i] * (decimal)Math.Pow(16, ch.Length - 1 - i);

            }

            Console.WriteLine(decimalval);
        }

    }

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.