C下通过socket收发十六进制数据
系统是在LINUX下,下位机发送十六进制数据过来 上位机怎么解析 把数据以十六进制的形式显示出来,发送十六进制又如何实现
------解决方案--------------------
socket不就是发16进制的么
------解决方案--------------------
那你 把buff里的有效数据按照发送的格式转换回去.
------解决方案--------------------
socket发送数据的时候是按位(bit)发送的,和是不是16进制有什么关系,
int a = 0x01;
send(socket_id,&a,sizeof(a));
接收:
int b;
recv(socket_id,&b,sizeof(b));
也许你说的是发送边界的问题,socket发送和接受数据的时候是比特流,如果你使用的是tcp的话,会要求考虑消息边界的问题,涉及解包。
------解决方案--------------------
你怎么发的??
------解决方案--------------------
楼主是不是这个意思: 例如十进制数23,下位机发送的是其十六进制值17,上位机接收到数据后,想要显示成原来的十进制值23?而此时上位机接收到的值直接打印出来,却是ASCII值17?
如果是这个意思就很好办,将收到的数据由十六进制转化成十进制就可以了
char a, b;
b = a / 10 * 16 + a % 10