java 类与结构体转化
来源:互联网 发布:淘宝合作协议书 编辑:程序博客网 时间:2024/06/05 19:50
大家知道,java是没有结构体的,而java中是用类保存属性
这时会出现一个问题,如果我们开发的程序客户端用的是java语言(比如android程序),而服务器是用c语言开发
那么如何将java中的属性跟c语言中的结构体进行转化呢
其实实现方法也比较简单:就是讲他们通过变成byte[]数组进行转化
举例说明(此处只写了将java中的字段转化为byte[]数组进行网络传输,服务器就收byte[]数据即可,同理服务器也只要将数据转化为byte[]数组,客户端接受后解析即可)
class Employee {
//此处我们将byte数据大小定死,为了方便,我们可以根据具体情况设计
private byte[] buf = new byte[30];
//将int转为低字节在前,高字节在后的byte数组,因为c中的Int类型和java中类型存储方法不同
//一个低字节在前,一个低字节在后
private static byte[] toLH(int n) {
byte[] b = new byte[4];
b[0] = (byte) (n & 0xff);
b[1] = (byte) (n >> 8 & 0xff);
b[2] = (byte) (n >> 16 & 0xff);
b[3] = (byte) (n >> 24 & 0xff);
return b;
}
//将float转为低字节在前,高字节在后的byte数组
private static byte[] toLH(float f) {
return toLH(Float.floatToRawIntBits(f));
}
//此处将name,id,salary三个字段分别为string,int,float类型转化到byte[]数组中
public Employee(String name, int id, float salary) {
//String类型根据getBytes确定长度,此处我输入的数据占20个字节,所以后面数据从byte[20]开始
byte[] temp = name.getBytes();
System.arraycopy(temp, 0, buf, 0, temp.length);
//java中int占四个字节
temp = toLH(id);
System.arraycopy(temp, 0, buf, 20, temp.length);
//float也根据自己转化成byte后length方法获取长度
temp = toLH(salary);
System.arraycopy(temp, 0, buf, 24, temp.length);
}
//返回要发送的数组
public byte[] getBuf() {
return buf;
}
//发送数据给服务器测试
public static void main(String[] args) {
try {
//因为服务器是本机,所以地址为172.0.0.1
Socket sock = new Socket("127.0.0.1", 8888);
sock.getOutputStream().write(new Employee("jfaskldf", 12413234, 4232.112f).getBuf());
sock.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
- java 类与结构体转化
- 结构体转化字符串
- SQLServer与JAVA字符集转化
- java int 与 byte[] 转化
- [VB.Net]获取对象的指针及结构体与字节数组间的相互转化
- jaxb xml序列化与Java类的转化
- Java中 包装类与字符串之间的转化
- Java子类与父类强制类型转化
- 汉语拼音转化类Java
- 类与结构体
- 类与结构体
- 结构体与类
- 结构体与类
- 类与结构体
- 类与结构体
- 类与结构体
- 结构体与类
- 结构体与类
- iOS RunLoop 初识
- 开发Web Service之二:WSDL逆向生成服务端 .
- mybatis 调用存储过程 包含输入输出参数多结果集
- SPFA 单源最短路径
- Linux菜鸟必学的60个命令(转)
- java 类与结构体转化
- 华为-查找完全数个数
- HDU 2066 一个人的旅行(最短路径)
- HIVE的简单介绍
- wsdl2java使用
- LINUX 和ubu 分别设置Ip
- 华为认证HCNA+HCNP+WLAN+思科认证免费
- 天赋是积累出来的
- 防止用户多次点击提交方法一:在js中的处理