 |
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 函數結束
|
_________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|