VFP搞定所有语言接口对接,字节数组难倒一众狐友,重庆科大侠出手了

2021-11-02 16:43:54 浏览数 (1)

重庆:洪义科

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

因为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的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。

0 人点赞