所谓的 文本,十六进制,ascall码读写,串口或网络发送数据 有区别吗??
假设这个数是10,表现形式如下:
二进制 00001010
十进制 10
十六进制 0x0A
字符串: "10"
使用网络的api sendto 或串口发送时,收到的是啥,发送时怎么发送的?
在计算机里,字符,十进制是不需要使用者转换成十六进制的,计算机自动转成十六进制,按二进制的0,1一位一位发送出去或接受的。
定义一个变量
char buf = 00001010 //应用层是不能这样写的,会把它当十进制数,只能写成十六进制0x0a
或 buf = 10;
或buf = 0x0A;
或buf = '10'
使用网络的套接字send(fd, (const SX_S8 *)&buf, length, block),发送出去,
使用网络的套接字ret =recv(fd, (const SX_S8 *)&buf, len, block);接收
C语言里使用printf(" recvbuf %d ",buf),以%d十进制,就显示10,
printf(" recvbuf %x ",buf),以%x十六进制显示,就显示0x0a,
printf(" recvbuf %c ",buf) 以%c字符制显示,就显示10
当然,如果发送的是’10’字符,十六进制显示就是0x40,以%d十进制,就显示10,发送时,计算机会自动对照ascall码表,将字符,或十进制,最终计算机都是自动转换成十六进制的数,按一个字节8位,发出去的,接收端收到的都是十六进制数,接收端收到是0x0A,
看什么格式打印。
在接收端,计算机应用层只有,char ,int,long,float,double数据类型
如果要发送一段数据: 文本或字符串"123abc" ,或一段结构体的十六进制或十进制数。
strcut data
{
int data1;
char data2;
char data3;
char data4[10];
char buf[10];
}