VB6中十六進製制常數65535的賦值

2021-04-27 09:05:23 字數 1383 閱讀 4352

出處: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

.print

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

.print

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,對應十六進製制數為...