String型变量转为

likekite 2007-08-30 04:13:48
请教:

Edit框中有内容如:2000,我以写好函数将其转为16进制数,请问如何把这个16进制数赋给一个BYTE 型变量!

String a=IntToHex(OctToDec(Edit1->Text),2);
//OctToDec(Edit1->Text)八进制转为16进制

BYTE b=a;

按照上例 就是把0x400的值付给 b ,然后向串口发送。

这样报错,请高手指教。

没分了,惭愧!
...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjq2003 2007-08-31
  • 打赏
  • 举报
回复
如果是要传送不需要转的,如果需要显示那才需要转。


b=strtoint(a)/0x100;
sendchar(b);
b=strtoInt(a)&0xff;
sendchar(b);

至少要发送2次
constantine 2007-08-31
  • 打赏
  • 举报
回复
如果是要传送不需要转的,如果需要显示那才需要转。
likekite 2007-08-31
  • 打赏
  • 举报
回复
解释一下我那个八进制的由来:
因为我的PLC地址内容是八进制的,
如果想要读取里面的内容就需要将其转为16进制,由于8进制内容是 0x400,想要将其赋给Variant型变量,我以为只能通过BYTE,呵呵!

多谢芯火!^_^
likekite 2007-08-31
  • 打赏
  • 举报
回复
我是这样做的,给大家作参考:

String address=IntToHex(OctalToDec(Edit3->Text),4); //ÏÈ´«³ÉÊ®½øÖÆÊý,Ö±½Ó¸³¸øStringÐͱäÁ¿
String a1=address.SubString(1,2);
String a2=address.SubString(3,2);




ENQ=VarArrayCreate(OPENARRAY(int,(0,8)),varByte);
for(int i=0;i<8;i++)
{
if(i<3)
{
ENQ.PutElement(buffh[i],i);
}
if(i==3)
{
ENQ.PutElement(a1,i);
}
if(i==4)
{
ENQ.PutElement(a2,i);
}
if(i>=5)
{
ENQ.PutElement(buffq[i-5],i); //×¢ÒâBuffq[] ϱê

}


}

likekite 2007-08-31
  • 打赏
  • 举报
回复
我已经可以转为16进制数了,IntToHex(OctToDec(Edit1- >Text),2);

请问StrToHex 的功能是?
睿音 2007-08-31
  • 打赏
  • 举报
回复
再提示楼主一下 八进制转为16进制 这种东西是没意义的。在计算机中只有2进制。数制只是你在显示表示给使用者时的方式。就像 0xFF 可能是-1可能是255.
睿音 2007-08-31
  • 打赏
  • 举报
回复
用这个函数转化吧
int __fastcall TForm1::StrToHex(AnsiString getStr)
{
//TODO: Add your source code here

char desChar[2];
int des;
byte Hbit;
byte Lbit;


::memcpy(desChar,getStr.c_str(),2);

Hbit=desChar[0];
Lbit=desChar[1];

if(Hbit>=0x30 && Hbit<=0x39)
Hbit=Hbit-0x30;

else if(Hbit>=0x41 && Hbit<=0x46)
Hbit=Hbit-0x37;
else
return 256;

if (Lbit == '\0')
return Hbit;
else if(Lbit>=0x30 && Lbit<=0x39)
Lbit=Lbit-0x30;
else if(Lbit>=0x41 && Lbit<=0x46)
Lbit=Lbit-0x37;
else
return 256;

Hbit=Hbit<<4;
des=Hbit+Lbit;

return des;
}
睿音 2007-08-31
  • 打赏
  • 举报
回复
16进制的2000是要占2个字节的,我不知道你怎么想的非要放到一个BYTE 型变量中。肯定会溢出的。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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