在VB中,下面的分配下面具有負值:分配一個負的十六進制文字值作爲一個長
Dim a As Long = &HEFCDAB89
Dim b As Long = &H98BADCFE
在C#分配相同的十六進制值不會導致相同的值:
long a = 0xEFCDAB89;
long b = 0x98BADCFE;
如何在C#中分配負十六進制值,因爲它在VB中?
在VB中,下面的分配下面具有負值:分配一個負的十六進制文字值作爲一個長
Dim a As Long = &HEFCDAB89
Dim b As Long = &H98BADCFE
在C#分配相同的十六進制值不會導致相同的值:
long a = 0xEFCDAB89;
long b = 0x98BADCFE;
如何在C#中分配負十六進制值,因爲它在VB中?
long b = 0xEFCDAB89L; //signed long
long c = (long)0x98BADCFEUL; //unsigned long
我不知道任何技巧來告訴你要指定一個負的十六進制文字的編譯器,我不知道這是真的有可能。我相信你唯一的選擇是將ulong
文字轉換爲long
。這將不得不在未經檢查的情況下完成。它仍然是編譯時已知的值,所以不會生成實際的轉換代碼。
long value = unchecked((long)0xFFFFFFFFFFFFFFFE);
// value == -2L
注意,在VB,&HEFCDAB89
和&H98BADCFE
實際上Integer
文字。他們恰好被提升爲Long
。要指定文字,您必須包含後綴L
。所以你的任務必須是:
Dim a As Long = &HFFFFFFFFEFCDAB89L ' these are actually long literals now
Dim b As Long = &HFFFFFFFF98BADCFEL