linux socket接收不到16进制数据,C下通过socket收发十六进制数据解决办法

C下通过socket收发十六进制数据系统是在LINUX下,下位机发送十六进制数据过来上位机怎么解析把数据以十六进制的形式显示出来,发送十六进制又如何实现------解决方案--------------------socket不就是发16进制的么------解决方案--------------------那你把buff里的有效数据按照发送的格式转换回去.------解决方案----------...
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值