سؤال

إذا وأنا أحاول مع BitConverter، فإنه يتطلب مجموعة بايت وليس لدي that.I ديك Int32 وأريد تحويله إلى UInt32.

في C ++ لم يكن هناك مشكلة في ذلك.

هل كانت مفيدة؟

المحلول

وويلقي بسيط هو كل ما تحتاج. وبما أنه من الممكن أن تفقد الدقة تفعل هذا، وتحويل صريح.

long x = 10;
ulong y = (ulong)x;

نصائح أخرى

وجرب:

Convert.ToUInt32()
Int32 i = 17;
UInt32 j = (UInt32)i;

وتحرير: السؤال غير واضح ما إذا كان لديك وقت طويل أو عدد صحيح

ونظرا لهذا وظيفة:

string test(long vLong)
{
    ulong vULong = (ulong)vLong;
    return string.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong);
}

وهذا الاستخدام:

    string t1 = test(Int64.MinValue);
    string t2 = test(Int64.MinValue + 1L);
    string t3 = test(-1L);
    string t4 = test(-2L);

وهذه ستكون النتيجة:

    t1 == "long hex: 8000000000000000, ulong hex: 8000000000000000"
    t2 == "long hex: 8000000000000001, ulong hex: 8000000000000001"
    t3 == "long hex: FFFFFFFFFFFFFFFF, ulong hex: FFFFFFFFFFFFFFFF"
    t4 == "long hex: FFFFFFFFFFFFFFFE, ulong hex: FFFFFFFFFFFFFFFE"

وكما ترون يتم الاحتفاظ بت تماما، حتى للقيم السالبة.

لتحويل طويلة إلى ULONG، ببساطة يلقي فيه:

long a;
ulong b = (ulong)a;
سوف

وC # NOT بطرح استثناء إذا كان رقما سالبا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top