我截取到一个封包想把他发送出去,请问怎么转换成16进制byte数组发送呢
var
Str:String;
Byt: array [1..6] of byte;
Begin
Str:='485454502F31';//这个是截取回来的封包,把空格去掉了
{怎么将上面的字符串转换成下面的数组格式呢}
Byt[0]:=$48;
Byt[1]:=$54;
Byt[2]:=$54;
Byt[3]:=$50;
Byt[4]:=$2F;
Byt[5]:=$31;
End;
 

解决方案 »

  1.   

    HexToBin(PChar(Str),PChar(@Byt[0]),Length(Str));
      

  2.   

    var 
    Str:String;
    Byt: array [0..5] of byte;
    Begin
    Str:='485454502F31';
    Byt[0]:=byte(Str[1]);
    Byt[1]:=byte(Str[2]);
    Byt[2]:=byte(Str[3]);
    Byt[3]:=byte(Str[4]);
    Byt[4]:=byte(Str[5]);
    End;
      

  3.   

    for i:=1 to 6 do
      Byt[i]:=strtoint('0x'+copy(str,i*2-1,2)); 
      

  4.   

    Str:='485454502F31';
    move(str[1],byt[0],sizeof(byt));
      

  5.   

    byte数组可以用来动态生成EXE,很好用的一个类型。
      

  6.   


    外部的一个exe文件,把它引用到自己的程序中,可以用RES文件来做,用的时候释放就可以了,但它有一个致命的缺点:如果别人用资源查看器查看你程序的PE结构,就可以把你包含进来的EXE提出来。这显然很不爽!最巧妙的办法是将外部的EXE以BYTE数组变量来定义,这样的话,程序需要执行这个EXE的时候只需要执行这个变量就可以了,如果不想执行仅想释放还原成原来的EXE,将这个变量以BYTE存成PE结构就可以了。这部分代码比较复杂,我已经实现。题外话,与楼主的问题无关。呵呵。
      

  7.   

    放到Byte数组就查不出来了?你这也叫使用Byte数组动态生成EXE?这跟Byte数组没有任何关系吧?使用char array行不行?EXE都是有对齐的,使用Word Array行不行?Integer Array呢?LongWord Array呢?
      

  8.   

    放到BYTE数组里面,被编译器一搞,比做到资源里面要保密的多。EXE以BYTE来存放比较常见,如果你硬是放到其它类型的数组里面当然可以。