用sendbuf发送数据这种形式怎么组织啊???(100分)

  • 主题发起人 主题发起人 wspdelphi
  • 开始时间 开始时间
W

wspdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi的TServerSocket的sendbuf向手持机发送数据,要求以以下格式组织:
A5C3 LEN SEQ RAW DATA A599
Flag(2byte) Length(3 byte) Sequence(12byte) Data Flag(2byte)
举例:
给模块输入:A5 C3 00 00 00 00 41 42 43 44 A5 99
则接受端收到:ABCD
注释:0123456789ABCDEF对应的16进制30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46

假如我发送ABCD到手持机,则需要将A5 C3 00 00 00 00 41 42 43 44 A5 99组织成一个数组,
我想可以是byte类型或char(也可能是其他)。但我不知道怎么进行组织,帮帮我吧,急啊!
 
c中可以这样组织,unsigned char strbuf[120] = {0xA5,0xC3,0x00,0x00,0x00,0x00};那delphi呢???
 
说白了就是这个数组怎么声明(那种类型),怎么赋值(将16进制原封不动的赋进去),别告诉我声明成字符串数据啊
 
那你就这样定义?
var d:array[1..120]of Byte =($10,$20,....);
 
我通过换算将一个字符转换成ascii码,再将ascii码转换成16进制,然后怎么组织成$?
 
我通过换算将一个字符转换成ascii码,再将ascii码转换成16进制,然后怎么组织成$?

16进制本来就是$,为何还有组织?
 
我说错了,我是指用IntToHex()转换成16进制后变成字符串了,怎么再分离
 
c中可以这样组织,unsigned char strbuf[120] = {0xA5,0xC3,0x00,0x00,0x00,0x00};那delphi呢???
可以这样:
const
MyChar: array[1..6] of char = (Char($A5), Char($C3), Char($00), Char($00), Char($00), Char($00));
 
用byte :=ord(char) ABCD
var d:array[1..12]of Byte:={ $A5, $C3, $00, $00, $00, $00, Ord('A'),ord('B'), Ord('C'),ord('D'),$A5,$99}
 
大侠们的问题解决赋值了,可是我发送了,手持机收到的信息不对
data: array[0..10] of Byte;

data[0]:=$A5;
data[1]:=$C3;
data[2]:=$00;
data[3]:=$00;
data[4]:=$0B;
data[5]:=$02;
data[6]:=$31;
data[7]:=$32;
data[8]:=$33;
data[9]:=$A5;
data[10]:=$99;
for k := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
ServerSocket1.Socket.Connections[k].SendBuf(data, 11);
end;
哪里有问题?有经验的,做过这方面的来看看啊
 
知道为什么了,不用我加信息头
 
我的要求是一个字符转换成ascii再转换成16进制,怎么转???
我是这么实现的:data := StrToInt(IntToHex(ord(str),2));
 
你就直接等于Ord值就可以了,10进制和16进制数值上是相同的呀,没必要这么多转换
data := ord(str);
你那句应该时这样写的吧:
data := StrToInt('$'+IntToHex(ord(str),2));
 
多人接受答案了。
 
后退
顶部