快速业务通道

Java与C底层数据类型转换 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

Java与C底层数据类型转换

时间:2011-04-13 javaeye snowolf

前段时间一直忙着做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 I

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号