重庆:洪义科
自从教了中间层对接大法,搞定了所有的语言的对接,但很多朋友们就遇到了字节数组这个东西,科科最近也遇到了,他也顺利解决了。
因为JAVA,C#里面有所谓的字符数组,在VFP是没有的,它是字符串。
随缘先生,就到处找问VFP转字节数组方法。
上面的C#代码翻译成VFP
代码语言:javascript复制Declare String HmacSHA1 in hmac.dll String, String
str3=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 详细的就不说了,看下方源码吧..
代码语言:javascript复制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 lcarray
ENDPROC
猫猫的心里话
如何帮助使用VFP的人?
用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。
我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。
加菲猫的vfp倡导用VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发。
已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。