仓酷云

标题: 了解下JAVA的Java与C底层数据范例转换 [打印本页]

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




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2