2月9

写在成为CP(content provider)前 中文和十六位ASCII码的转换

| |
23:05    Bear 本站原创    不指定
      学了一段时间的ASP了,也给其他客户做过一些动态网站之类的。但是做这种CP类的编程还是第一次。原来也用过chinabank的网上银行收银系统,但那是别人做好的。今天从某位帅哥那弄来了SP的接入账号和其他一些相关资料。开始了CP编程之路。

    首先碰到的是一个编码的问题。
加码规则说明:
加码时将字符串中的所有字符转换成其对应的ASCII值的16进制值,例如:“A”的ASCII码值为65,以16进制值表示为41,故应发送两个字符“41”以代表字符“A”。示例:msg:=41代表msg=A
对于汉字则以其内码的16进制值来表示,如“测试”应为:B2E2CAD4。示例:msg:= B2E2CAD4表示的是msg=测试
参数中只要参数标识与内容之间用“:=”连接的都需要解码后方可使用,解码时将每两位当成其ASCII值的16进制值将其还原。


   测试的时候服务器返回-report usernumber=158********&usernumbertype=0&itemid=321***&gatename=mobile&feetype=2&loginservers=smdispatch,smdispatch1,smdispatch2,&state=5&statemsg:=B8C3D6B8C1EED6BBD4CAD0EDC1AAC3CBBACFD7F7B7BDCAB9D3C3

为了弄清statemsg中包含的错误内容,于是我写了下面一段程序
<%
function toASCII(msg)
on error resume next
msgpart=len(msg)/2
strReturn = ""
counter = 1    
   Do while counter < msgpart+1  
            strReturn = strReturn & Hex(Asc(Mid(msg, counter*2-1,2)))
      If counter >msgpart then  
   exit do  
      end if  
         counter = counter+1  
   Loop
  toASCII = strReturn
end function

function tochinese(msg)
on error resume next
msgpart=len(msg)/4
strReturn = ""
counter = 1    
   Do while counter < msgpart+1  
            strReturn = strReturn & Chr(Cint("&H" &Mid(msg, counter*4-3,4) &""))
      If counter >msgpart then  
   exit do  
      end if  
         counter = counter+1  
   Loop
  tochinese = strReturn
end function
%>


用这个
statemsg=“B8C3D6B8C1EED6BBD4CAD0EDC1AAC3CBBACFD7F7B7BDCAB9D3C3”
Response.Write tochinese(code)
解码过来,为“该指令只允许联盟合作方使用”。哪里出问题了明天在研究,希望对大家有点帮助。

Tags: , , , , ,
阅读(2919) | 评论(0) | 引用(0)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]