VFP对接其他语言,遇到字节数组,该如何处理?

本文介绍在VFP中处理字节数组的方法,包括从字符串转换为字节数组的过程及注意事项,并提供了一个实用的hextoarray函数。

重庆:洪义科

自从教了中间层对接大法,搞定了所有的语言的对接,但很多朋友们就遇到了字节数组这个东西,科科最近也遇到了,他也顺利解决了。

因为JAVA,C#里面有所谓的字符数组,在VFP是没有的,它是字符串。

图片

图片

随缘先生,就到处找问VFP转字节数组方法。

上面的C#代码翻译成VFP

Declare String HmacSHA1 in hmac.dll String, Stringstr3=UPPER(HmacSHA1(str2, priKey))csign=STRCONV(str3,13)

不要被所概念所迷惑了。

今天的文章就把这东西沉淀下来。

以下是科先生帮我们填的坑。

近日,多个项目接口需要使用到参数类型为“字节数组”,一开始挺茫然的。

有人说这个对其他语言来说是字节数组,但在VFP中就是字符串,不需要转换。

网上查了一堆其他语言的hextoarray,最初有被其他语言有误导,但其核心方法是能移植到VFP中的。对比其他语言,有很多处理在VFP中已经有相应的完整算法,VFP实现起来的步骤更为简单,做进制的转换处理,若将文件转为字节数组,需要先用filetostr(文件名),将文件转为字符串后传入hextoarray

VFP 本身也有 STRCONV(字符串,15)来转换,但据科科验证,127之上有转换有问题。大家可以验证一下。

加菲猫注

需要注意的是:byte[] 数据范围是 -128至127,在VFP中要对 >127的做数据处理。

至于为什么要用字节数组,这个优点自己“度娘”一下就明白了。

整个过程中最初爬了不少的坑T.T 详细的就不说了,看下方源码吧..

PROCEDURE hextoarray  LPARAMETERS lchex_str  PRIVATE ALL  lcstr16=STRCONV(lchex_str,15)   lcarray=[]  FOR lc_i=1 TO LEN(lcstr16) STEP 2    lcstr=SUBSTR(lcstr16,lc_i,2)    lcstr=EVALUATE([0x]+lcstr)    IF lcstr>127      lcstr = lcstr-256    ENDIF     lcarray=lcarray+[,]+TRANSFORM(lcstr)  ENDFOR  lcarray=SUBSTR(lcarray,2)  lcarray='['+lcarray+']'  RETURN lcarrayENDPROC 
猫猫的心里话"

如何帮助使用VFP的人?
用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。

我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。

加菲猫的vfp倡导用VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发。已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加菲猫的VFP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值