社区
C语言
帖子详情
Java 和 C 通讯时的字节转换问题
caicai
2000-02-16 11:02:00
Java 和 C 一起编写C/S程序。在网络传输的过程中,是不是需要进行高低字节的转化?是不是只有在传输int等数据类型的时候才需要?
ASCII的字符需要吗?
如果是两字节的中文编码字符呢?
如果是long double 等大于两个字节的数据类型呢?
...全文
313
7
打赏
收藏
Java 和 C 通讯时的字节转换问题
Java 和 C 一起编写C/S程序。在网络传输的过程中,是不是需要进行高低字节的转化?是不是只有在传输int等数据类型的时候才需要? ASCII的字符需要吗? 如果是两字节的中文编码字符呢? 如果是long double 等大于两个字节的数据类型呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caicai
2000-02-18
打赏
举报
回复
岂不是不同长度的数据类型,在传输的时候需要不同的转换?
比如c/c++在x86环境中,和java通讯,必须知道传过来的具体的内容含义,如何切分数据
网络传输的应用难道都要做切分数据的工作吗?
二进制编码顺序,可否细讲讲?
sintony
2000-02-17
打赏
举报
回复
传输时的顺序是指二进制编码的顺序,而非字符、数值的本身的顺序。
netmare
2000-02-17
打赏
举报
回复
所有大于两个字节的数据类型都有此问题,用beck的方法即可解决
netmare
2000-02-17
打赏
举报
回复
其实数据的顺序是由cpu决定的,与操作系统无关
如intel x86结构下,short型数0x1234表示为34 12,int型数0x12345678表示为78 56 34 12
如ibm power pc结构下,short型数0x1234表示为12 34,int型数0x12345678表示为12 34 56 78
由于这个原因不同的机器之间无法通信,所以要转换成一种约定的数序,也就是网络字节顺序,其实就是如同power pc那样的顺序
caicai
2000-02-17
打赏
举报
回复
谢谢,转化的方法我基本明白了,
可否再给个分析,windows的c/c++下,2各字节以上的数据,在转换的时候,
是怎样的顺序变幻的。尤其是4各字节的:long 4321->1234还是3412还是2143?
不太清楚标准的unix网络字节和window中的高地位顺序。
我想这个问题很多人都有兴趣的。
哪位大虾系统的解答一下?谢谢先。
如果你想要几分的话,这里不够的话,还可以吧java版的50分送上。:)
sintony
2000-02-16
打赏
举报
回复
说的对,两字节的中文编码字符处理起来是有点麻烦,不是有些乱麻
不过现在有这个函数就没事了
//函数ToUnicodeAndOut的定义 start
#ifndef MAX_UNICODE_WIDTH
#define MAX_UNICODE_WIDTH 1024+1024
//第一个1024是URL的可能最大长度,第二个1024是TITLE部分允许的最大长度
#endif
//函数ToUnicodeAndOut(LPCSTR szSrcOEM)
//用于将一个字符串转化为Unicode然后输出
//第一个参数"LPCSTR szSrcOEM"是待转化的字符串
//成功与否都返回0
int ToUnicodeAndOut(LPCSTR szSrcOEM)
{
int i,iResult,iLen;
wchar_t outBuff[MAX_UNICODE_WIDTH];
iLen = strlen(szSrcOEM);
iResult = MultiByteToWideChar(CP_OEMCP,NULL,szSrcOEM,iLen,outBuff,MAX_UNICODE_WIDTH);
//调用API进行转化
for( i=0;i<iResult;i++)
{
outBuff[i] = htons(outBuff[i]); //转化为网络字节顺序
}
fwrite(outBuff,iResult*2,1,stdout);
return 0;
}
//函数ToUnicodeAndOut的定义 end
这是朋友帮我的,于你共享吧
beck
2000-02-16
打赏
举报
回复
因该诗作网络顺序和主机顺序的转换吧
ntohs htons ntohl htonl
JAVA
上百实例源码以及开源项目
基于
JAVA
的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向
JAVA
初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
Android 和 windows C/C++/QT
通讯
时
字节
存储
windows(intel平台):采用小端
字节
序存储数据【低地址存放数据的低位,高地址存放数据的高位,数据的高位存放在数组的后面】(windows接收
java
发送过来的short,int需要调用ntohs和ntohl来
转换
到小数端) 【数据高位】:...
java
源码包---
java
源码 大量 实例
基于
JAVA
的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向
JAVA
初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
java
开源包1
Pinyin4j是一个流行的
Java
库,支持中文字符和拼音之间的
转换
。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
java
源码包4
基于
JAVA
的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向
JAVA
初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章