社区
C语言
帖子详情
socket通讯的字节顺序的问题
njallenwang
2001-09-03 04:32:10
winsock.h中提供了两个函数ntohl,ntohs只能转换ushort和ulong,对其它类型呢?(short,int,float,double...)
问题好象有点土啊,但我现在还不明白,能告诉我吗?
...全文
216
6
打赏
收藏
socket通讯的字节顺序的问题
winsock.h中提供了两个函数ntohl,ntohs只能转换ushort和ulong,对其它类型呢?(short,int,float,double...) 问题好象有点土啊,但我现在还不明白,能告诉我吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
njallenwang
2001-09-03
打赏
举报
回复
我在做java和c之间的通讯必须转换字节顺序,
对word和int16我已经转换成功,但对于float直接用htonl会截掉小数部分,不知如何解决?darkay(火凤凰)帮我!
darkay
2001-09-03
打赏
举报
回复
同意楼上的说法,如果你要对一个32位的float数进行转换的话只要调用htonl即可.
告诉你一个秘密:htonl实际上就是高低位的呼唤(对于host是intel兼容CPU)也就是说:
0x12345678 -> 0x78563412而已,如果你要对大于32位的数据进行转换,只要根据这个规则转换就可以啦,给个示范:
__int64 hton64(__int64 host)
{
__int64 ret;
long high,low;
low = host & 0xFFFFFFFF;
host >>= 32;
high = host & 0xFFFFFFFF;
low = htonl(low);
high = htonl(high);
ret = 0;
ret = low;
ret <<=32;
ret |= high;
return ret;
}
#define ntoh64(net) hton64(net)
mengliu
2001-09-03
打赏
举报
回复
再网络中传输的字节顺序是一个标准。至于传输其它类型需要你自己的约定。
因为不同的体系结构有big-endianess和little-endianess。每一个接着都有自己的转换函数。
所以只要对多字节的书掉同样的 函数就行,不过注意的是int的位数。有的32为,有的64为呀。
cgaga
2001-09-03
打赏
举报
回复
字节序问题只存在于数据需要与非i386兼容机进行数据交换的时候
如果你的程序只是用tcp/ip来传送数据,所有运行你程序计算机都是i386兼容机
并且你并没用修改ip报头化,你就没有必要考虑此问题
如果你确定需要考虑网络字节序的话,
你可以参考一些unix网络编程书中的《外部数据表示》一章
njallenwang
2001-09-03
打赏
举报
回复
那怎么传有符号的数和符点?难道要自己移位?
activeboy
2001-09-03
打赏
举报
回复
不能,因为这是internet的字节顺序。internet只有WORD.和 DWORD。也就是不带符号的整形。
Spring整合activemq,启动报java.lang.NoSuchMethodError: org.springframework.beans.factory.config.Configurab
这是由于我导入的包,activemq-all已经有整合spring的包存在<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.13.2</ve...
# ActiveMQ连接超时
问题
(java.net.
Socket
Exception: Connection reset)
ActiveMQ连接超时
问题
(java.net.
Socket
Exception: Connection reset)
Java消息中间件ActiveMQ-5.10.0启动失败解决办法
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.apache.activemq.xbean.XBeanBrokerFactory$1@90c59ca: startup ...
java程序终止时调用_java – 简单的spring应用程序终止,除非调用Thread.sleep(…)
我看到一些使用Spring和Apache Camel的非常简单的Java应用程序的奇怪行为.我在我的应用程序上下文中定义了下面的spring bean:这是一个单一路线的驼峰环境.据我所知,当创建bean时,将启动一个新线程,该线程侦听传入的消息并将它们路由到我的eventConsumer.我的应用程序的起点很简单:public static void main(String[] args) {A...
SSM框架项目遇到的
问题
汇总
1.URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs) 表现:xml文件的<beans xmlns=http://www.springframework.org/schema/beans报错 解决:关闭IDEA的离线状态 2.
问题
:模块下的dubbo依赖报错(红色...
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章