仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 631|回复: 10
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java与C底层数据范例转换

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-18 11:11:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
前段工夫一向忙着做J2EE服务器与C++客户真个项目。终究,项目告一段落,有一些劳绩在这里与人人分享。
Java代码 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
 * 仅仅合用于 Java 与 C++ 通信中,收集流剖析与天生利用
 *
 * 上下位交换(Big-Endian 年夜头在前 & Little-Endian 小头在前)。
 * 举例而言,有一个4字节的数据0x01020304,要存储在内存中或文件中编号0˜3字节的地位,两种字节序的分列体例分离以下:
 *
 * Big Endian
 *
 * 低地点              洼地址
 * ---------------------------------------------------->
 * 地点编号
 * |   0   |   1   |   2    |   3  |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |   01   |   02  |   03   |   04  |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 *
 * Little Endian
 *
 * 低地点              洼地址
 * ---------------------------------------------------->
 * 地点编号
 * |   0   |   1   |   2    |   3  |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |   04   |   03  |   02   |   01  |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 *
 * Java则一致利用big形式
 * c中的unsigned short 对应着java中的char两个字节,无标记
 * c的无标记int,short,byte字节数组,响应转换成java的long,char,short
 *
 * @author Snowolf
 * @version 1.0
 * @since 1.0
 */
public abstract class CIOUtil {
public static final String CHARSET = "UTF-8";

/**
 * 从输出流中读布尔 
 *
 * @param is
 * @return
 * @throws IOException
 */
public static boolean readBoolean(DataInputStream is) throws IOException {
return is.readBoolean();
}

/**
 * 从流中读定长度字节数组
 *
 * @param is
 * @param s
 * @return
 * @throws IOException
 */
public static byte[] readBytes(DataInputStream is, int i)

throws IOException {
byte[] data = new byte[i];
is.readFully(data);

return data;
}

/**
 * 从输出流中读字符 
 *
 * @param is
 * @return
 * @throws IOException
 */
public static char readChar(DataInputStream is) throws IOException {
return (char) readShort(is);
}

/**
 * 从输出流中读双精度 
 *
 * @param is
 * @return
 * @throws IOException
 */
public static double readDouble(DataInputStream is) throws IOException {
return Double.longBitsToDouble(readLong(is));
}

/**
 * 从输出流中读单精度
 *
 * @param is
 * @return
 * @throws IOException
 */
public static float readFloat(DataInputStream is) throws IOException {
return Float.intBitsToFloat(readInt(is));
}

/**
 * 从流中读整型
 *
 * @param is
 * @return
 * @throws IOException
 */
public static int readInt(DataInputStream is) throws IOException {
return Integer.reverseBytes(is.readInt());
}

/**
 * 从流中读长整型
 *
 * @param is
 * @return
 * @throws IOException
 */
public static long readLong(DataInputStream is) throws IOException {
return Long.reverseBytes(is.readLong());
}

/**
 * 从流中读短整型
 *
 * @param is
 * @return
 * @throws IOException
 */
public static short readShort(DataInputStream is) throws IOException {
return Short.reverseBytes(is.readShort());
}

/**
 * 从输出流中读字符串 字符串 布局为一个指定字符串字节长度的短整型+实践字符串
 *
 * @param is
 * @return
 * @throws IOException
 */
public static String readUTF(DataInputStream is) throws IOException {
short s = readShort(is);
byte[] str = new byte[s];

is.readFully(str);

return new String(str, CHARSET);
}

/**
 * 向输入流中写布尔
 *
 * @param os
 * @param b
 * @throws IOException
 */
public static void writeBoolean(DataOutputStream os, boolean b)

throws IOException {
os.writeBoolean(b);
}

/**
 * 向输入流中写字节数组
 *
 * @param os
 * @param data
 * @throws IOException
 */
public static void writeBytes(DataOutputStream os, byte[] data)

throws IOException {
os.write(data);
}

/**
 * 向输入流中写字符
 *
 * @param os
 * @param b
 * @throws IOException
 */
public static void writeChar(DataOutputStream os, char b)

throws IOException {
writeShort(os, (short) b);
}

/**
 * 向输入流中写双精度
 *
 * @param os
 * @param d
 * @throws IOException
 */
public static void writeDouble(DataOutputStream os, double d)

throws IOException {
writeLong(os, Double.doubleToLongBits(d));
}

/**
 * 向输入流中写单精度
 *
 * @param os
 * @param f
 * @throws IOException
 */
public static void writeFloat(DataOutputStream os, float f)

throws IOException {
writeInt(os, Float.floatToIntBits(f));
}

/**
 * 向输入流中写整型
 *
 * @param os
 * @param i
 * @throws IOException
 */
public static void writeInt(DataOutputStream os, int i) throws IOException {
os.writeInt(Integer.reverseBytes(i));
}

/**
 * 向输入流中写长整型
 *
 * @param os
 * @param l
 * @throws IOException
 */
public static void writeLong(DataOutputStream os, long l)

throws IOException {
os.writeLong(Long.reverseBytes(l));
}

/**
 * 向输入流中写短整型
 *
 * @param os
 * @param s
 * @throws IOException
 */
public static void writeShort(DataOutputStream os, short s)

throws IOException {
os.writeShort(Short.reverseBytes(s));
}

/**
 * 向输入流中写字符串 字符串 布局 为 一个指定字符串字节长度的短整型+实践字符串
 *
 * @param os
 * @param str
 * @throws IOException
 */
public static void writeUTF(DataOutputStream os, String str)

throws IOException {
byte[] data = str.getBytes(CHARSET);
writeShort(os, (short) data.length);
os.write(data);
}
}
<p>
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
蒙在股里 该用户已被删除
10#
发表于 2015-3-21 14:52:18 | 只看该作者
是一种突破用户端机器环境和CPU
活着的死人 该用户已被删除
9#
发表于 2015-3-14 23:17:11 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
莫相离 该用户已被删除
8#
发表于 2015-3-7 10:31:24 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
简单生活 该用户已被删除
7#
发表于 2015-2-24 02:36:51 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
变相怪杰 该用户已被删除
6#
发表于 2015-2-8 02:51:21 | 只看该作者
是一种突破用户端机器环境和CPU
乐观 该用户已被删除
5#
发表于 2015-2-6 13:54:54 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
若天明 该用户已被删除
地板
发表于 2015-2-2 16:21:43 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-25 08:03:43 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-21 10:37:53 来自手机 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
老尸 该用户已被删除
楼主
发表于 2015-1-20 16:32:00 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表