문제

BitConverter로 시도하면 바이트 배열이 필요하고 그것을 가지고 있지 않습니다. int32가 있고 UINT32로 변환하고 싶습니다.

C ++에서는 문제가 없었습니다.

도움이 되었습니까?

해결책

간단한 캐스트 만 있으면됩니다. 이 작업을 수행하는 정밀도를 잃을 수 있으므로 전환은 명백합니다.

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

다른 팁

노력하다:

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

편집 : 질문이 길거나 INT가 있는지 여부는 불분명합니까?

이 기능을 감안할 때 :

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#은 음수 인 경우 예외를 던지지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top