出處:http://blog.csdn.net/slowgrace/archive/2009/04/28/4132758.aspx
、m60a1
、tiger_zhao
的指點。
在vb6中負整數是補碼表示的,因此對於integer型別(雙位元組)的-1,對應的十六進製制表示是ffff。而正整數是原碼表示的,因此對於long型別(四位元組)的65535,對應到十六進製制表示也是ffff。
試一下如下的**:
public
subtest()
diml1as
long
diml2
aslongl1=
&hffffl2=
65535
debug
.printl1,
l2debug
hex(
l1),hex(
l2)end
sub
輸出是:
-1 65535
ffffffff ffff
也就是,當你把&hffff賦給乙個長整型變數的時候,vb會自動認為這是個integer型別,所以就把它理解為-1了。如果你希望&hffff表示的是65535,也很簡單,像下面這樣:
l1 = &hffff&
就是最後加個「&」,呵呵。
&hffff&=65535
&hffff=-1
就是這麼簡單!
另外tiger_zhao
給出這樣的解釋,我覺得很清楚,抄錄在這裡:16進製制值本身是無符號的,但是 vb 的 integer/long 都是有符號的。在編譯常量時,如果沒有指定型別,總是用最小的型別來存放。&hffff 兩位元組,就用 integer 型別存放,所以成了 -1。要定義 65535 就必須用 &hffff&,有了字尾 & 就會強制用 long 存放。
另外m60a1
還提出一種用字串轉換的辦法,像下面這樣:
l1 = "&hffff"
上面這個語句的實質是long = string,所隱含的**是 clng(string)。
注意,如果是byte=string的話,就是賦值了,相當於複製記憶體,比如看pctgl
的這個例子:
dimmulbits()
asbyte
dimvbstr
asstring
vbstr
="中國china"
mulbits
=vbstr
debug
ubound(
mulbits)
輸出是13,mulbits裡面這時包含的是vbstr的unicode值,他的實現方式就是複製記憶體。
Python中的十六進製制數
運算十進位制整數轉十六進製制整數用hex 十六進製制整數轉十進位制整數用int 類似地,十進位制整數轉二進位制整數用bin 十進位制整數轉八進位制整數用oct 描述 hex 函式用於將10進製整數轉換成16進製制,以字串形式表示。語法 hex x 引數說明 x 10進製整數 返回值 返回16進製制數...
ios中十六進製制顏色轉UIColor
ios中十六進製制顏色轉uicolor 16進製制顏色使用廣泛且方便,但ios使用的是 uicolor 物件,不直接支援16進製制顏色,因此,在ios開發中如果需要使用16進製制顏色值則要手動將16進製制顏色轉換為 uicolor物件 下面提供乙個將16進製制顏色值轉換成uicoror物件的函式 u...
在MATLAB中實現十進位制和十六進製制數的轉化方法
在matlab中算出了乙個十進位制的陣列 有幾百個單元 如何把這些十進位制的書轉化為16進製制呢?如果是正數直接使用dec2hex函式。如果是負數,將其轉換為反碼再用dec2hex。轉換規則 對n位二進位制表示的有符號十進位制數,其數值範圍為 2 n 1 2 n 1 1,對正數n,對應十六進製制數為...