`

TCP/UDP测试等工具字符串发送与十六进制发送的区别

 
阅读更多
  在使用串口助手调试,TCP/UDP测试等工具时,经常会在主界面上的数据发送区和数据接收区有一个“按十六进制”的选项,在数据发送区,如果不选择此项,在输入框中输入要发送的字母或者数字,点击“发送”时,这时将按字符的方式发送,即输入的每一个数字或者字母将转换成ASCii码发送,如1a,实际发送的是1的ACSII值49,a的ACSII值97,发送的是两个字符的ASCII值,如果选择了此项,那么点击“发送”按钮时将直接发送1a而非每一个字符的ASCII值,即1a;在数据接收区,该功能类似。

    注意:由于char类型的取值范围为-128-+127,所以在接收十六进制发送的数据时为防止溢出,接收数据类型最好定义为unsigned char,其取值范围为0-255。

    在计算机中,数据是以二进制的形式存储的,例如十进制 1(10进制)在计算机中用 0000 0001(2进制)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。

例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:

(1)字符串发送

         串口以字符串发送数据,首先将字符串转化为二进制,格式如下:

          0100 0001     0011 1000    0011 0101    0011 0010    0011 0000   00110001   0011 0000    0011 0001 

                A(0x41)          8                  5                      2                    0                1                    0                    1

 

         0011 0000     0011 0000   0011 0000    0011 0000     0100 0001    0011 1001    0011 0001    0100 0001

                    0                    0                     0                   0                    A                 9                   1                   A

         然后按照8位(串口设置数据位为8位)形式将数据发送出去。

         串口接收的数据格式如下:

              

 

编号

数据内容

编号

数据内容

0

A

8

0

1

8

9

0

2

5

10

0

3

2

11

0

4

0

12

A

5

1

13

9

6

0

14

1

7

1

15

A

 

 (2)十六进制发送数据

          串口以十六进制发送数据,首先将数据转化为:

          1010 1000     0110 0010    0000 0001     0000 0001    0000 0000    0000 0000     1010 1001     0001 1010

              0XA8            0X52               0X01             0X01              0X00           0X00                0XA9            0X1A 

         然后按照8位(串口设置数据位为8位)形式将数据发送出去。

         串口接收的数据格式如下:

 

编号

数据内容

编号

数据内容

0

A8

4

00

1

52

5

00

2

01

6

A9

3

01

7

1A

 

(3)数据转换
            任何数据在计算机内部都是以二进制保存的,所以进制与数据的存储无关,只与输入输出有关。所以,对于进制转换,我们只关心字符串中的结果。

            比如我想发送一个十六进制的字符数组,但是char 型和int 型的数据不必要转为0X类型,char型数据类型可同时存储字符或十进制数值,所以可统一用char[]存储,
            然后即可发送。
            

点击(此处)折叠或打开

  1. /* UTC time */
  1.  
  2. //不必要将int型变量转为整型十六进制表示,可直接与0xff求与,只关心结果,转换过程在计算机内部处理
  3.  
  4. time_t tm;
  5. unsigned char buffer[10];
  6. tm = time(NULL);
  7.    
  8. printf("%d:%x\n",(int)tm,(unsigned int)tm);
  9.  
  10. buffer[0] = ( tm & 0xFF );
  11.     
  12. buffer[1] = ( tm & 0xFF00 ) >> 8;
  13.   
  14. buffer[2] = ( tm & 0xFF0000 ) >> 16;
  15.     
  16. buffer[3] = ( tm & 0xFF000000 ) >> 24;

点击(此处)折叠或打开

  1.  
  2. //虽然buf定义了几个十六进制元素,但填充后面的元素并不需要转换为十六进制来表示,直接赋值即可
  3. unsigned char buf[20] = {0xAB,0x3C,0x02};
  4. char *str = "asd2bc";
  5. buf[3] = str[0]; // a
  6. buf[4] = str[1]; // s
  7. buf[5] = str[2]; // d
  8. buf[6] = str[3]; // 2
  9. buf[7] = str[4]; // b
  10. buf[8] = str[5]; // c
  11.  
  12. send(fd,buf,ntypes); //TCP发送数据
分享到:
评论

相关推荐

    TCP/UDP测试工具

    tcp/udp客户端,服务端测试工具。可以收发字符串和十六进制数据。

    sokit TCP/UDP 数据包收发测试(调试)工具(Win32) 1.3

    sokit 是一款开源免费的 TCP / UDP 测试(调试)工具, 可以用来接收,发送或转发TCP/UDP数据包。  本程序可以工作在三种模式: 服务器模式,用来监听本地端口,接收外部数据包,并且可以回复自定义数据; 客户端...

    UDP十六进制数据传输

    1. **十六进制转换**:在传输前,原始的二进制数据需要被转换成十六进制字符串。这可以通过编程语言中的内置函数或库实现,例如在Python中,可以使用`hex()`函数将整数或字节序列转换为十六进制字符串。 2. **构造...

    TCP/UDP Socket调试工具(SocketTool) v4

    可以将非显示的字符串(如回车、换行等)转化为十六进制字符串输入进行测试。把显示十六进制的选择项选中,然后在数据发送窗口即处于HEX 输入模式了, 在里面直接输入HEX 格式内容:如313233,然后点击发送数据按钮:以下...

    例18-6 十六进制数据的发送_十六进制数据的发送_

    在实际应用中,十六进制数据的发送还可能涉及到网络通信,如TCP/IP或UDP协议,这时数据会被封装在网络包中,发送和接收的过程会更复杂,需要处理更多的协议细节。 总结起来,十六进制数据的发送涉及到数值的转换、...

    delphi10.3Idtcpclientto发送数据安卓客户端实例(加入十六进制).zip

    3. **发送数据**:使用 IdTCPClient1.Socket.Write 方法将十六进制字符串发送到服务器。注意,Write 方法通常需要传入字节数组,因此十六进制字符串可能需要进一步处理,如转换为字节数组。 4. **关闭连接**:完成...

    QT下写的界面程序,可以实现串口和UDP的字符串和16进制收发

    用qt实现的界面程序,实现串口和UDP的字符串和16进制的收发以及qt界面美化的方法。 更详细的介绍及界面展示,请参考笔者博客,在CSDN上搜索“QT学习过程及简单串口和UDP通信demo开发过程及代码分享”。

    linux tcp udp 调试工具

    sokit 是一款开源免费的 TCP / UDP 测试(调试)工具, 可以用来接收,发送或转发TCP/UDP数据包。 本程序可以工作在三种模式: 服务器模式,用来监听本地端口,接收外部数据包,并且可以回复自定义数据; 客户端模式,...

    WINSOCK VB 十六进制 网络编程 net

    在VB中,可以使用函数如&H(前缀表示十六进制数)来创建十六进制数值,或者使用Val函数结合Chr和Asc函数来转换字符与对应的十六进制值。在网络通信中,可能需要将接收到的二进制数据转换为十六进制字符串进行解析或...

    SocketTools4-功能强大的TCP/UDP网络通讯调试工具

    数据发送与接收:支持十六进制(HEX)格式的数据发送和接收,方便处理非显示的字符串(如回车、换行等)。用户可以在UI部分定义自己的文本框、按钮、标签文字等交互元件。 使用流程:TCP通信测试时,首先创建TCP ...

    C#TCP 通信(TCP发送16进制)

    在IT领域,网络通信是软件...发送16进制数据则需要先将字符串转换为字节数组,然后通过Write()方法进行发送,服务器端通过Read()方法接收并处理。这些知识点对于任何需要进行网络通信的C#开发者来说都十分基础且重要。

    Delphi通过 UDP 协议十六进制数据传输源程序.rar

    1. **数据转换**:在发送数据前,将原始数据(可能为二进制)转换为十六进制字符串。这可以通过循环遍历每个字节并使用内置的IntToHex函数完成。例如,`IntToHex(ByteValue, 2)`将返回一个表示ByteValue的两位十六...

    java网络编程,UDP,发送16进制报文。

    上述代码中,`DatatypeConverter.parseHexBinary()`方法用于将16进制字符串转换为字节数组,然后创建一个`DatagramPacket`实例,包含数据和目标服务器的IP地址与端口。最后,通过`DatagramSocket`发送这个数据包。 ...

    Delphi UDPServer 发送接收16进制数据

    在发送和接收数据时,可能需要将字节数据与16进制字符串之间进行转换。 3. **数据包处理**:在UDPServer的OnUDPRead事件中,我们可以接收到客户端发送的数据。这些数据通常是以字节数组形式存在的,我们需要解析这...

    通信调试工具,支持 串口调试,UDP/TCP调试

    这些可能包括十六进制与ASCII之间的转换、数据格式转换(如二进制、十进制、十六进制和字符串)等,这些辅助功能在处理各种数据格式时非常实用。 此外,该工具具有日志收集功能,可以自动保存通信过程中的日志,...

    TCP/UDP Socket调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client

    1、可以将非显示的字符串(如回车、换行等)转化为十六进制字符串输入进行测试。 string strCmd = "GETTVLIST \n\rL12"; Console.Write(BitConverter.ToString(ASCIIEncoding.Default.GetBytes(strCmd)).Replace("-...

    几种常用TCPUDP和串口调试工具.rar

    1. **数据包构造**:用户可以自定义数据包的头部和负载信息,支持十六进制和字符串格式输入。 2. **端口监听**:可以设置监听特定端口,查看所有到达该端口的数据包。 3. **数据包捕获**:捕获网络上的数据流,用于...

    sokit测试UDP、TCP工具

    支持发送ascii字符串数据,以及十六进制表示的原始字节,单次发送的字符数目没有限制;收到的数据会同时以这两种形式显示。 sokit TCP/UDP 数据包收发测试(调试)工具(Win32)是一款IP工具客户端应用,用户评价还是...

    sokit-1.3-win

    支持发送ascii字符串数据,以及十六进制表示的原始字节,单次发送的字符数目没有限制;收到的数据会同时以这两种形式显示。 sokit TCP/UDP 数据包收发测试(调试)工具(Win32)是一款IP工具客户端应用,用户评价还是...

    UDP测试工具

    同样,此工具允许用户以16进制或字符串格式发送数据。特别的是,当选择发送16进制数据时,工具还提供了一个选项,允许用户决定16进制数据是否以空格分隔。这种功能对于查看和调试数据流特别有帮助,因为空格可以清晰...

Global site tag (gtag.js) - Google Analytics