| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖, 1 人收藏
标题:VFP有没有10进制转16进制的函数?
只看楼主 加入收藏
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:786
专家分:1160
注 册:2021-10-13
收藏
得分:0 
因为没有掌握transform函数用法,走了很多弯路,哈哈哈。。。
PARAMETERS nnum
creturn="0x"
cstr=""
DO WHILE .t.
    nhex=MOD(nnum,16)
    n=INT(nnum/16)
    IF nhex>9
        cstr=CHR(nhex+55)+cstr
    else   
        cstr=TRANSFORM(nhex)+cstr
    endif   
    IF n>=16
        nnum=n
        LOOP
    ELSE
        EXIT
    ENDIF
ENDDO
IF n#0
    IF n>9
        creturn=creturn+chr(n+55)+cstr
    ELSE
        creturn=creturn+TRANSFORM(n)+cstr   
    ENDIF   
else   
    creturn=creturn+cstr
ENDIF
   
RETURN creturn

谢谢各位
2023-01-24 20:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
回复 11楼 sam_jiang
思路没错,可以用数据结构优化一下算法,如:
num = 1234567890
ALINES(aHex,"0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F",",")
DO WHILE num > 0
    ? aHex[num%16+1]
    num = INT(num/16)
ENDDO
2023-01-24 22:03
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:786
专家分:1160
注 册:2021-10-13
收藏
得分:0 
回复 12楼 吹水佬
简洁明了!
2023-01-24 22:47
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:786
专家分:1160
注 册:2021-10-13
收藏
得分:0 
以下是引用sam_jiang在2023-1-24 22:47:15的发言:

简洁明了!

漏了一个num=0的情况。

PARAMETERS num
*num = 1234567890
creturn=""
ALINES(aHex,"0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F",",")
IF num=0 &&单独提出来运行是不是会快点?
    RETURN "0x0"
ENDIF
DO WHILE num >0
    creturn=aHex(num%16+1)+creturn
    *? aHex[num%16+1]
*!*    IF num=0 &&运行可能会慢点
*!*        EXIT
*!*    else   
        num = INT(num/16)
*!*    ENDIF   
ENDDO
RETURN "0x"+creturn

[此贴子已经被作者于2023-1-24 23:18编辑过]

2023-01-24 23:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:6 
以下是引用sam_jiang在2023-1-24 23:11:59的发言:


漏了一个num=0的情况。

IF num=0 &&单独提出来运行是不是会快点?
    RETURN "0x0"
ENDIF

只要不是在循环体内,速度影响不大。
如果只考虑无符号整数,初始化creturn处理一下就可以:
creturn = IIF(num != 0, "", "0")
DO WHILE num > 0
  ......
ENDDO
RETURN creturn
2023-01-25 07:42
快速回复:VFP有没有10进制转16进制的函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036909 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved