আমি কীভাবে সি # তে ইউন্টকে রূপান্তর করব?
আমি কীভাবে সি # তে ইউন্টকে রূপান্তর করব?
উত্তর:
প্রদত্ত:
uint n = 3;
int i = checked((int)n); //throws OverflowException if n > Int32.MaxValue
int i = unchecked((int)n); //converts the bits only
//i will be negative if n > Int32.MaxValue
int i = (int)n; //same behavior as unchecked
বা
int i = Convert.ToInt32(n); //same behavior as checked
--EDIT
অন্তর্ভুক্ত তথ্য কেনান ই কে দ্বারা উল্লিখিত হিসাবে
uintচেয়ে int.MaxValueবড়টি যদি আপনি একটি castালাই ব্যবহার করেন তবে negativeণাত্মক ফলাফল পাবেন বা যদি আপনি ব্যবহার করেন তবে ব্যতিক্রম Convert.ToInt32।
ধরে নিই যে আপনি কেবল একটি টাইপ থেকে 32 বিটগুলি তুলতে চান এবং অন্য ধরণের মধ্যে যেমনটি ফেলে দেন:
uint asUint = unchecked((uint)myInt);
int asInt = unchecked((int)myUint);
গন্তব্য প্রকারটি অন্ধভাবে 32 বিটগুলি বেছে নেবে এবং তাদের পুনরায় ব্যাখ্যা করবে।
বিপরীতে যদি আপনি দশমিক / সংখ্যাগত মানগুলি গন্তব্য প্রকারের সীমার মধ্যে রাখতে আগ্রহী হন তবে:
uint asUint = checked((uint)myInt);
int asInt = checked((int)myUint);
এই ক্ষেত্রে, আপনি ওভারফ্লো ব্যতিক্রমগুলি পাবেন যদি:
আমাদের ক্ষেত্রে, আমরা unchecked32-বিটগুলি যেমন আছে তেমন সংরক্ষণের সমাধান চেয়েছিলাম , সুতরাং এখানে কয়েকটি উদাহরণ দেওয়া হল:
int....: 0000000000 (00-00-00-00)
asUint.: 0000000000 (00-00-00-00)
------------------------------
int....: 0000000001 (01-00-00-00)
asUint.: 0000000001 (01-00-00-00)
------------------------------
int....: -0000000001 (FF-FF-FF-FF)
asUint.: 4294967295 (FF-FF-FF-FF)
------------------------------
int....: 2147483647 (FF-FF-FF-7F)
asUint.: 2147483647 (FF-FF-FF-7F)
------------------------------
int....: -2147483648 (00-00-00-80)
asUint.: 2147483648 (00-00-00-80)
uint...: 0000000000 (00-00-00-00)
asInt..: 0000000000 (00-00-00-00)
------------------------------
uint...: 0000000001 (01-00-00-00)
asInt..: 0000000001 (01-00-00-00)
------------------------------
uint...: 2147483647 (FF-FF-FF-7F)
asInt..: 2147483647 (FF-FF-FF-7F)
------------------------------
uint...: 4294967295 (FF-FF-FF-FF)
asInt..: -0000000001 (FF-FF-FF-FF)
------------------------------
int[] testInts = { 0, 1, -1, int.MaxValue, int.MinValue };
uint[] testUints = { uint.MinValue, 1, uint.MaxValue / 2, uint.MaxValue };
foreach (var Int in testInts)
{
uint asUint = unchecked((uint)Int);
Console.WriteLine("int....: {0:D10} ({1})", Int, BitConverter.ToString(BitConverter.GetBytes(Int)));
Console.WriteLine("asUint.: {0:D10} ({1})", asUint, BitConverter.ToString(BitConverter.GetBytes(asUint)));
Console.WriteLine(new string('-',30));
}
Console.WriteLine(new string('=', 30));
foreach (var Uint in testUints)
{
int asInt = unchecked((int)Uint);
Console.WriteLine("uint...: {0:D10} ({1})", Uint, BitConverter.ToString(BitConverter.GetBytes(Uint)));
Console.WriteLine("asInt..: {0:D10} ({1})", asInt, BitConverter.ToString(BitConverter.GetBytes(asInt)));
Console.WriteLine(new string('-', 30));
}
Convert.ToInt32()uintএকটি মান হিসাবে গ্রহণ করে ।
আমি ট্রাই পার্স ব্যবহার করে বলব, যদি ইউটিটি কোনও প্রকারের জন্য বড় হয় তবে এটি 'মিথ্যা' ফিরবে।
ভুলে যাবেন না যে আপনি যতদূর> 0 যাচ্ছেন ততক্ষণ কোনও ইউন্ট একটি ইন্টের চেয়ে অনেক বড় যেতে পারে
uint i = 10;
int j = (int)i;
বা
int k = Convert.ToInt32(i)