16进制的字符串转换成16进制的数值

leey123 2010-12-11 11:50:40
大家好,
不知道该如何将 55 01 01 C8 00 00 00 00 00 00 这样的16进制的字符串转成16进制的数值,有这样的函数吗?
谢谢各位
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
glint 2010-12-15
  • 打赏
  • 举报
回复
10进制和16进制的数值,本质是一样的,如65和~h41二进制都是1000001
假如你的通信协议要求往串口发一个16进制的41这个数值,那么发送:
65或~h41或大写字母A(ASCII码为65或~h41)都是一样的
你这组数值~h55 ~h01 ~h01 ~hC8 ~h00 ~h00 ~h00 ~h00 ~h00 ~h00,因为有~h00,所以不能简单转换为字符串,而要使用blob或者char数组
zjxsw 2010-12-15
  • 打赏
  • 举报
回复
global type gf_createbmp from function_object
end type

forward prototypes
global function blob gf_createbmp (string as)
end prototypes

global function blob gf_createbmp (string as);long l,k,i,t
string q2
blob z,bmp
q2='0123456789ABCDEF'
k=len(as)
bmp=blob(fill('1',k/2))
t=1
for i= 1 to k step 2
l=((pos(q2,mid(as,i,1)) -1)*16)+(pos(q2,mid(as,i+1,1)) -1)
if l=0 then
z=blob('11')
blobedit(z,2,char(0))
z=blobmid(z,2,1)
else
z=blob(char(l))
end if
t=blobedit(bmp,t,z)

next
return bmp

end function

leey123 2010-12-11
  • 打赏
  • 举报
回复
那我应该怎么写这个字符串,是这样吗?~h55 ~h01 ~h01 ~hC8 ~h00 ~h00 ~h00 ~h00 ~h00 ~h00

谢谢
zlf19810306 2010-12-11
  • 打赏
  • 举报
回复
~h表示16进制,'~h55'表示16进制的55
leey123 2010-12-11
  • 打赏
  • 举报
回复
谢谢,我要通过串口把16进制的数据传给一台仪器,仪器要求的格式就是16进制的55 01 01 C8 00 00 00 00 00 00
WorldMobile 2010-12-11
  • 打赏
  • 举报
回复
没看明白你要做什么,16进制的数值在pb中怎么存?只能用字符串来存

你是不是想把16进制的字符串转成十进制?

在PB中没有对应的函数,需要自己手工写

你可以把字符串截一下,如C8,你可以转12*16 + 8放到一个long类型的变量里
lightsword1 2010-12-11
  • 打赏
  • 举报
回复
自己动手转也不复杂的

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧