| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6074 人关注过本帖
标题:用vfp如何把字符串转换为16进制
只看楼主 加入收藏
mmx12
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-10-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:11 
用vfp如何把字符串转换为16进制
用vfp如何把字符串转换为16进制????有没有相应的函数?
搜索更多相关主题的帖子: 字符串 如何 
2016-10-10 10:20
mmx12
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-10-23
收藏
得分:0 
请教各位高手,老师
2016-10-10 10:33
mmx12
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-10-23
收藏
得分:0 
请教各位老师 用vfp如何把字符串转换为16进制编码????
2016-10-10 10:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:5 
例如呢?
2016-10-10 10:51
mmx12
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-10-23
收藏
得分:0 
回复 4楼 吹水佬
例如把如下join串转换成16进制编码

{'msg_sign':'5485891512','msg_ver':'0.1','msg_sys_sn':'11111','msg_time':'20160725111111','msg_sender':'123456','msg_flg':'0','msg_crrltn_id':'00','msg_txn_code':'100100','msg_type':'00'}

请教老师
2016-10-10 10:59
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:5 
以下是引用mmx12在2016-10-10 10:59:32的发言:

例如把如下join串转换成16进制编码

{'msg_sign':'5485891512','msg_ver':'0.1','msg_sys_sn':'11111','msg_time':'20160725111111','msg_sender':'123456','msg_flg':'0','msg_crrltn_id':'00','msg_txn_code':'100100','msg_type':'00'}

请教老师

要合法的字符串才能转为16进的,
一般有2进制转为16进,8进转为16进,10进转为16进
你是不是要求数值型的字符串转为16进。。
2016-10-10 11:10
mmx12
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-10-23
收藏
得分:0 
回复 6楼 mywisdom88
老师,不是数值型的字符串,是一段join串
2016-10-10 11:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:5 
程序代码:
?DECTOHEX(31)
?DECTOHEX(ASC([]))
?DECTOHEX(ASC(SUBS([],1,1))) + DECTOHEX(ASC(SUBS([],2,1)))
*--------------------------------------------------------------------------------
*十进制转十六进制函数
*--------------------------------------------------------------------------------
FUNCTION DECTOHEX
PARAMETERS INNUM
CSTR=[] 
DO WHILE INNUM>0
   CSTR=IIF(BETWEEN(MOD(INNUM,16),10,15),CHR(MOD(INNUM,16)+55),TRANSFORM(MOD(INNUM,16)))+CSTR
   INNUM=INT(INNUM/16)
ENDDO
RETURN CSTR

坚守VFP最后的阵地
2016-10-10 11:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用mmx12在2016-10-10 10:59:32的发言:

例如把如下join串转换成16进制编码

{'msg_sign':'5485891512','msg_ver':'0.1','msg_sys_sn':'11111','msg_time':'20160725111111','msg_sender':'123456','msg_flg':'0','msg_crrltn_id':'00','msg_txn_code':'100100','msg_type':'00'}

请教老师

还是不太明白,关键是这个“16进制编码”是什么?
是不是?例如:
字符串:ABC
转换成16进制编码:414243

2016-10-10 14:27
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:5 
之前收藏一位大虾的:

*****************************************************************
***  数的进位制的转换 GetNumSystem V1.00 1T2T
***  作用:将指定进位制的数转换为另一个指定进位制的数
***  语法:
***        ?GetNuMSystem(2,10,"1010")      &&结果为"10"
***        ?GetNumSystem(32,10,"1T2T")     &&结果为"62557"
***  事件:
***        2007.03.05  建立本函数
***        2007.03.06  修改
***                    (1)将lcSource表示的字符改为大写并去掉前导和尾部空格
***                    (2)增加若lnFrom和lnTo相等时的直接返回原来数据
***                    (3)Local变量增加lnDec、lcResult
*****************************************************************
Parameters lnFrom,lnTo,lcSource
*  判断参数个数及其类型
If Type("lnFrom")#Chr(78) Or Type("lnTo")#Chr(78) Or Type("lcSource")#Chr(67)
  Return "Error #0001 : 缺少参数或参数数据类型错误。"
EndIf
*  判断进制是否为2-36进制
If Int(lnFrom)#lnFrom Or !Between(lnFrom,2,36) Or Int(lnTo)#lnTo Or !Between(lnTo,2,36)
  Return "Error #0002 : 转换的数的进制错误,只能在2-36进制之间转换。"
EndIf
*  判断需要转换的数是否符合lnFrom进制要求
Local lcString,lnCnt,llResult,lnDec,lcResult
lcString="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"  &&数的符号体系                     
lcSource=Alltrim(Upper(lcSource))  &&输入的数修改为大写去掉前导和尾部空格
llResult=.T.
For lnCnt=1 To Len(lcSource)
  If !Substr(lcSource,lnCnt,1)$Substr(lcString,1,lnFrom)
    llResult=.F.
    Exit
  EndIf
EndFor
If llResult=.F. Or Empty(lcSource)
  Return "Error #0003 : 被转换的数不符合进位制要求。"
EndIf
*  转换前进位制与转换后进位制相同的处理
If lnFrom=lnTo  &&不转换
  Return lcSource
EndIf
*  lnFrom进制转换为十进制
lnDec=0
For lnCnt=1 To Len(lcSource)
  lnDec=lnDec+lnFrom^(lnCnt-1)*(At(Substr(lcSource,Len(lcSource)-lnCnt+1,1),lcString)-1)
EndFor
*  十进制转换为lnTo进制
lcResult=''
Do While lnDec>0
  lcResult=Substr(lcString,Mod(lnDec,lnTo)+1,1)+lcResult
  lnDec=(lnDec-Mod(lnDec,lnTo))/lnTo
EndDo
Return Iif(Empty(lcResult),"0",lcResult)
* Eof : GetNumSystem V1.00 By 1T2T (C)Copyright 2007-2007


numbtran.rar (2.16 KB)
2016-10-10 22:13
快速回复:用vfp如何把字符串转换为16进制
数据加载中...
 
   



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

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