  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 1 樓
  | 
		
			
				 發表於: 星期五 八月 25, 2006 10:08 am    文章主題: 字串轉換成含正負符號的整數值 | 
				     | 
			 
			
				
  | 
			 
			
				 	  | 代碼: | 	 		  
 
*==============================================================================================
 
* 函數: StrToInteger
 
* 狀態: Public
 
* 用途: 轉換字符串到整型值
 
* 參數: StrValue - 要轉換的值
 
*      SignedFlag - .T. 若是有符號的值
 
* 返回值: 整型的值
 
* 運行環境:適應於INTEL CPU 的 低字在前高字在後 的操作系統
 
* 例: StrToInteget( chr(254)+chr(255) , .t. )      &&--含有正負符號的短整數, 值從 -32768, 到 32767
 
*==============================================================================================
 
FUNCTION StrToInteger(StrValue AS String,SignedFlag AS Boolean )
 
 
    local lnDecimal,lnLen,lnI,lnMax
 
    
 
    lnDecimal = 0
 
    lnLen = len(StrValue)
 
    IF lnLen > 8
 
        MESSAGEBOX('要求的字節數大太,不能超過8個字節,即64位值。',0,'錯誤信息')
 
       RETURN 0
 
    ENDIF
 
    for lnI = 1 to lnLen
 
        lnDecimal = lnDecimal + asc(substr(StrValue, lnI, 1)) * 256^ (lnI-1)         &&以 256 進制方式計算無符號值
 
    next lnI
 
    
 
    if SignedFlag and BITTEST(lnDecimal,((lnLen * 8) - 1))         &&判斷是否是有符號值,並且是負值
 
        IF lnLen > 4
 
              lnDecimal = (lnDecimal - 2^32) - 2^((lnLen-4)*8)     && 得到 lnDecimal 的補數
 
        ELSE
 
              lnDecimal = lnDecimal - 2^(lnLen*8)
 
        ENDIF
 
    ENDIF
 
        
 
    return INT(lnDecimal)
 
endfunc         && StrToInteger 函數結束 
 
 | 	 
  _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |