我的字符串如下,是几个数据包报文,我想把每个报文的前面20个字节去掉第1个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00
00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64
14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25
43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01
00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19
00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25
0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00
00 00  
第2个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00
00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64
14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25
43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01
00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19
00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25
0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00
00 00  
第3个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00
00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64
14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25
43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01
00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19
00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25
0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00
00 00  最后得到如下的内容第1个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
   00 00 ff 11  3c bd ab 64 14 02 ab 64
14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25
43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01
00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19
00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25
0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00
00 00  
第2个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
            00 00 ff 11  3c bd ab 64 14 02 ab 64
14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25
43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01
00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19
00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25
0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00
00 00  
第3个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
            00 00 ff 11  3c bd ab 64 14 02 ab 64
14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25
43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01
00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19
00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25
0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00
00 00  请问各位高手,该如何处理啊

解决方案 »

  1.   

    这个还不简单,假如你的数组是buf,大小size,
    新数组是buf1,size1.直接
    buf1=new char[size-20];
    memcpy(buf1,buf+20,size-20);
    size1=size-20;
      

  2.   

    string XX;
    .....
    XX = XX.substr(20, XX.size())
      

  3.   


    char szRecv[1024] = {0};recv(sock, szRecv, sizeof(szRecv), 0);char *p = szRecv + 20;
    CString s = p; // this is 
      

  4.   

    但是我的这些报文内容都是在一个文件里面的,而且记录不止三条,如何把它放到数组里面的,比如我的文件内容如下:
    第1个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第2个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第3个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第4个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第5个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第6个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第7个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第8个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第9个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
    第10个 192.168.24.84 -> 192.168.24.1  DHCP DHCP Request 
    00 0d 88 4a 7d c7 00 e0  fc 01 01 06 08 00 45 00 
    00 64 00 00 00 00 ff 11  3c bd ab 64 14 02 ab 64 
    14 01 9c 40 17 70 00 50  00 00 00 05 00 01 00 25 
    43 10 4a 6d ce e9 00 00  00 00 00 00 00 00 00 01 
    00 00 a0 55 01 02 a0 00  00 01 00 00 00 00 00 19 
    00 00 00 00 0d 80 00 05  97 00 00 24 fc 0c 00 25 
    0c 06 04 00 03 e8 00 00  06 00 00 00 00 00 00 00 
    00 00  
      

  5.   


    buf[20];
    recv(sock, buf, 20, 0);
    length = 0;
    buf1[1024];
    while(length < size)
    {
        memset(buf1,0,1024);
        int ret = recv(sock,buf1,1024,0);
        length += ret;
    }
      

  6.   

    如个每段数据的长度都是一样的在文件里也是一样很好处理的,例如每段数据的总长度是100个字节,去掉队20个字节就是80个字节了,那么你可以在读取文件之前用Seek先偏移20个字节再读取,然后再偏移再读取直到EOF结尾为止.或者直接每次读取100个字节后将前面20字节丢弃掉.
    char buffer[100];
    char *p = NULL;FILE *f = fopen("c:\\file.dat", "r");while (!feof(f))
    {
       fread(buffer, 1, 100, f);
       p = buffer + 20;
       // p 就是你希望去掉前20字节后的数据地址
    }fclose(f);
      

  7.   

    1. 首先定位第一个 "IP-->IP地址"  和第二个 "IP-->IP地址",然后读出第一个"IP-->IP地址"偏移20 bytes的第二个 "IP-->IP地址"到内容。2. 重复1的操作,直到文件结束。
      

  8.   

    自己查找字符串等得到 IP-->IP地址 ,然后再偏移20字节等来进行字符串截取