c# - ণবর - স্বাভাবিক সংখ্যা কি কি




C#হেক্স এবং পূর্ণ ফিরে রূপান্তর পূর্ণসংখ্যা (8)

int হেক্স:

int একটি = 72;

Console.WriteLine ("{0: X}", একটি);

int থেকে hex:

int বি = 0xB76;

Console.WriteLine (খ);

আমি কিভাবে নিম্নলিখিত রূপান্তর করতে পারেন?

2934 (পূর্ণসংখ্যা) B76 (হেক্স)

আমি কি করার চেষ্টা করছি ব্যাখ্যা করা যাক। আমার ডাটাবেসে ব্যবহারকারী আইডি আছে যা পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হয়। ব্যবহারকারীদের তাদের আইডি রেফারেন্স করার পরিবর্তে আমি তাদের হেক্স মান ব্যবহার করতে চাই। প্রধান কারণ এটি ছোট।

তাই শুধুমাত্র হ্যাক থেকে পূর্ণসংখ্যা থেকে যেতে হবে না তবে আমার হেক্স থেকে পূর্ণসংখ্যা পর্যন্ত যেতে হবে।

সি # এ এটি করার একটি সহজ উপায় আছে কি?


আমি এই উত্তর খুঁজে পেতে আগে আমি হেক্স স্ট্রিং int এবং ফিরে রূপান্তর করার জন্য আমার নিজের সমাধান তৈরি। আশ্চর্যজনক নয়, এটি কম নেট ওভারহেডের চেয়ে .net সমাধান থেকে দ্রুততর।

        /// <summary>
        /// Convert an integer to a string of hexidecimal numbers.
        /// </summary>
        /// <param name="n">The int to convert to Hex representation</param>
        /// <param name="len">number of digits in the hex string. Pads with leading zeros.</param>
        /// <returns></returns>
        private static String IntToHexString(int n, int len)
        {
            char[] ch = new char[len--];
            for (int i = len; i >= 0; i--)
            {
                ch[len - i] = ByteToHexChar((byte)((uint)(n >> 4 * i) & 15));
            }
            return new String(ch);
        }

        /// <summary>
        /// Convert a byte to a hexidecimal char
        /// </summary>
        /// <param name="b"></param>
        /// <returns></returns>
        private static char ByteToHexChar(byte b)
        {
            if (b < 0 || b > 15)
                throw new Exception("IntToHexChar: input out of range for Hex value");
            return b < 10 ? (char)(b + 48) : (char)(b + 55);
        }

        /// <summary>
        /// Convert a hexidecimal string to an base 10 integer
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private static int HexStringToInt(String str)
        {
            int value = 0;
            for (int i = 0; i < str.Length; i++)
            {
                value += HexCharToInt(str[i]) << ((str.Length - 1 - i) * 4);
            }
            return value;
        }

        /// <summary>
        /// Convert a hex char to it an integer.
        /// </summary>
        /// <param name="ch"></param>
        /// <returns></returns>
        private static int HexCharToInt(char ch)
        {
            if (ch < 48 || (ch > 57 && ch < 65) || ch > 70)
                throw new Exception("HexCharToInt: input out of range for Hex value");
            return (ch < 58) ? ch - 48 : ch - 55;
        }

সময় কোড

static void Main(string[] args)
        {
            int num = 3500;
            long start = System.Diagnostics.Stopwatch.GetTimestamp();
            for (int i = 0; i < 2000000; i++)
                if (num != HexStringToInt(IntToHexString(num, 3)))
                    Console.WriteLine(num + " = " + HexStringToInt(IntToHexString(num, 3)));
            long end = System.Diagnostics.Stopwatch.GetTimestamp();
            Console.WriteLine(((double)end - (double)start)/(double)System.Diagnostics.Stopwatch.Frequency);

            for (int i = 0; i < 2000000; i++)
                if (num != Convert.ToInt32(num.ToString("X3"), 16))
                    Console.WriteLine(i);
            end = System.Diagnostics.Stopwatch.GetTimestamp();
            Console.WriteLine(((double)end - (double)start)/(double)System.Diagnostics.Stopwatch.Frequency);
            Console.ReadLine(); 
        }

ফলাফল:

Digits : MyCode : .Net
1 : 0.21 : 0.45
2 : 0.31 : 0.56
4 : 0.51 : 0.78
6 : 0.70 : 1.02
8 : 0.90 : 1.25

একটি fashionably বিলম্বিত প্রতিক্রিয়া, কিন্তু আপনি Integer শর্টনিং বাস্তবায়ন কিছু ধরণের বিবেচনা করেছেন? যদি ব্যবহারকারীর আইডিটি যত তাড়াতাড়ি সম্ভব সংক্ষিপ্ত করা হয়, তবে যদি আমি অবশ্যই এটি মিস না করে থাকি, তবে বিশেষ করে হেক্সাডেসিমেল রূপান্তর প্রয়োজন হলে অন্য কোনও স্পষ্ট কারণ আছে কিনা তা জানতে আগ্রহী। এটি কি স্পষ্ট এবং জ্ঞাত (যদি প্রয়োজন হয়) যে ব্যবহারকারী আইডি প্রকৃতপক্ষে প্রকৃত মানের হেক্সাডেসিমাল উপস্থাপনা?


ব্যবহার করুন:

int myInt = 2934;
string myHex = myInt.ToString("X");  // Gives you hexadecimal
int myNewInt = Convert.ToInt32(myHex, 16);  // Back to int again.

কিভাবে দেখুন : আরো তথ্য এবং উদাহরণের জন্য হেক্সাডেসিমেল স্ট্রিং এবং সংখ্যাসূচক প্রকারের (সি # প্রোগ্রামিং সহায়িকা) মধ্যে রূপান্তর করুন


হেক্স থেকে:

string hex = intValue.ToString("X");

Int:

int intValue = int.Parse(hex, System.Globalization.NumberStyles.HexNumber)

নেট ফ্রেমওয়ার্ক

খুব ভাল ব্যাখ্যা এবং কয়েক প্রোগ্রামিং লাইন ভাল JOB

// Store integer 182
int intValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = intValue.ToString("X");
// Convert the hex string back to the number
int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

PASCAL >> C #

http://files.hddguru.com/download/Software/Seagate/St_mem.pas

পুরাতন স্কুল থেকে কিছু খুব পুরানো পদ্ধতি প্যাসকেল রূপান্তর সি #

    /// <summary>
    /// Conver number from Decadic to Hexadecimal
    /// </summary>
    /// <param name="w"></param>
    /// <returns></returns>
    public string MakeHex(int w)
    {
        try
        {
           char[] b =  {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
           char[] S = new char[7];

              S[0] = b[(w >> 24) & 15];
              S[1] = b[(w >> 20) & 15];
              S[2] = b[(w >> 16) & 15];
              S[3] = b[(w >> 12) & 15];
              S[4] = b[(w >> 8) & 15];
              S[5] = b[(w >> 4) & 15];
              S[6] = b[w & 15];

              string _MakeHex = new string(S, 0, S.Count());

              return _MakeHex;
        }
        catch (Exception ex)
        {

            throw;
        }
    }

string HexFromID(int ID)
{
    return ID.ToString("X");
}

int IDFromHex(string HexID)
{
    return int.Parse(HexID, System.Globalization.NumberStyles.HexNumber);
}

আমি সত্যিই এই মান প্রশ্ন, যদিও। আপনি লক্ষ্য করেছেন যে লক্ষ্যটিকে ছোট করে তুলতে হবে, যা এটি করবে, কিন্তু এটি নিজেও একটি লক্ষ্য নয়। আপনি সত্যিই মনে রাখবেন এটি টাইপ করা সহজ বা টাইপ করা সহজ।

আপনি যদি মনে রাখতে সহজ মনে করেন, তবে আপনি একটি পদক্ষেপ পিছনে দিকে যাচ্ছেন। আমরা এটা এখনও একই আকার জানি, শুধু ভিন্নভাবে এনকোড। কিন্তু আপনার ব্যবহারকারীরা জানবেন না যে অক্ষরগুলি 'এ-এফ' থেকে সীমাবদ্ধ, এবং তাই আইডি তাদের জন্য একই ধারণাগত স্থান দখল করবে যেমন 'অক্ষর' অক্ষরটি অনুমোদিত ছিল। সুতরাং একটি টেলিফোন নম্বর মনে রাখার পরিবর্তে এটি একটি GUID (সমান দৈর্ঘ্যের) মনে রাখার মতো।

যদি আপনি টাইপিং মানে, কীপ্যাড ব্যবহার করতে সক্ষম হবার পরিবর্তে ব্যবহারকারী এখন কীবোর্ডের মূল অংশটি ব্যবহার করতে হবে। এটি টাইপ করা আরো কঠিন হতে পারে, কারণ এটি তাদের আঙ্গুলগুলিকে চিনতে পারে এমন একটি শব্দ হবে না।

একটি অনেক ভাল বিকল্প আসলে তাদের একটি বাস্তব ব্যবহারকারী নাম চয়ন করা হয়।


int valInt = 12;
Console.WriteLine(valInt.ToString("X"));  // C  ~ possibly single-digit output 
Console.WriteLine(valInt.ToString("X2")); // 0C ~ always double-digit output




type-conversion