Tmemorystream 設定Setsize時超過int的範圍怎麼半?? |
答題得分者是:harpist
|
ddaken
一般會員 ![]() ![]() 發表:39 回覆:33 積分:19 註冊:2005-01-21 發送簡訊給我 |
請問各位大大小弟使用Tmemorystream時
如果再設定memorystream的大小時,由於Setsize()只能輸入int的範圍 可是小弟需要超過65536也就是要使用int64時 小弟就不能用 unsigned long xx=100000; memorystream->SetSize(xx); 那麼小弟該怎麼設定memorystream的大小呢?? 我發現如果直接使用 memorystream->SetSize(100000);時 並不會有錯, 但小弟並不是每次都剛好要100000呀?? 編輯記錄
ddaken 重新編輯於 2007-04-19 16:02:14, 註解 無‧
|
harpist
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
|
ddaken
一般會員 ![]() ![]() 發表:39 回覆:33 積分:19 註冊:2005-01-21 發送簡訊給我 |
===================引 用 harpist 文 章=================== <textarea class="cpp" rows="10" cols="60" name="code"> int size = 821420032; //最大值 TMemoryStream* pms = new TMemoryStream(); pms->SetSize(size); ShowMessage(pms->Size); delete pms; </textarea>? 最大值是821420032不夠嗎? int 最大值不是-32768~32768 即使使用usigned long 也只有0~65535 ??怎麼會是821420032?? |
harpist
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
Type Size (bits) Range
short int 16 -32,768 <= X <= 32,767 unsigned int 32 0 <= X <= 4,294,967,295 int 32 -2,147,483,648 <= X <= 2,147,483,647 unsigned long 32 0 <= X <= 4,294,967,295 BCB裡的定義是這樣的 ![]() 至於怎麼會是821420032...我試出來的 ![]() ===================引 用 ddaken 文 章=================== int 最大值不是-32768~32768 即使使用usigned long 也只有0~65535 ??怎麼會是821420032??
------
~§~迷時師渡,悟了自渡~§~ |
lu
高階會員 ![]() ![]() ![]() ![]() 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
呵呵~~你說的 int 範圍是-32768~32768(0x7FFF)
那是16位元時代的事,int 是2個BYTE(那是上個世紀的事了 ![]() 現在是32位元的時代,int 和long都是4個BYTE int 的範圍變成 -2147483648 ~ 2147483647(0x7FFFFFFF) 等64位元的CPU普及以後,int 搞不好就變成64位元了(範圍變成-9223372036854775808 ~ 9223372036854775807) ===================引 用 ddaken 文 章=================== int 最大值不是-32768~32768 即使使用usigned long 也只有0~65535 ??怎麼會是821420032?? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |