`
381573578
  • 浏览: 72210 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java与其他语言数据类型之间的转换方法

阅读更多
public final static byte[] getBytes(short s, boolean asc) {
    byte[] buf = new byte[2];
    if (asc)
      for (int i = buf.length - 1; i >= 0; i--) {
        buf[i] = (byte) (s & 0x00ff);
        s >>= 8;
      }
    else
      for (int i = 0; i < buf.length; i++) {
        buf[i] = (byte) (s & 0x00ff);
        s >>= 8;
      }
    return buf;
  }
  public final static byte[] getBytes(int s, boolean asc) {
    byte[] buf = new byte[4];
    if (asc)
      for (int i = buf.length - 1; i >= 0; i--) {
        buf[i] = (byte) (s & 0x000000ff);
        s >>= 8;
      }
    else
      for (int i = 0; i < buf.length; i++) {
        buf[i] = (byte) (s & 0x000000ff);
        s >>= 8;
      }
    return buf;
  }
  public final static byte[] getBytes(long s, boolean asc) {
    byte[] buf = new byte[8];
    if (asc)
      for (int i = buf.length - 1; i >= 0; i--) {
        buf[i] = (byte) (s & 0x00000000000000ff);
        s >>= 8;
      }
    else
      for (int i = 0; i < buf.length; i++) {
        buf[i] = (byte) (s & 0x00000000000000ff);
        s >>= 8;
      }
    return buf;
  }
  public final static short getShort(byte[] buf, boolean asc) {
    if (buf == null) {
      throw new IllegalArgumentException("byte array is null!");
    }
    if (buf.length > 2) {
      throw new IllegalArgumentException("byte array size > 2 !");
    }
    short r = 0;
    if (asc)
      for (int i = buf.length - 1; i >= 0; i--) {
        r <<= 8;
        r |= (buf[i] & 0x00ff);
      }
    else
      for (int i = 0; i < buf.length; i++) {
        r <<= 8;
        r |= (buf[i] & 0x00ff);
      }
    return r;
  }
  public final static int getInt(byte[] buf, boolean asc) {
    if (buf == null) {
      throw new IllegalArgumentException("byte array is null!");
    }
    if (buf.length > 4) {
      throw new IllegalArgumentException("byte array size > 4 !");
    }
    int r = 0;
    if (asc)
      for (int i = buf.length - 1; i >= 0; i--) {
        r <<= 8;
        r |= (buf[i] & 0x000000ff);
      }
    else
      for (int i = 0; i < buf.length; i++) {
        r <<= 8;
        r |= (buf[i] & 0x000000ff);
      }
    return r;
  }
  public final static long getLong(byte[] buf, boolean asc) {
    if (buf == null) {
      throw new IllegalArgumentException("byte array is null!");
    }
    if (buf.length > 8) {
      throw new IllegalArgumentException("byte array size > 8 !");
    }
    long r = 0;
    if (asc)
      for (int i = buf.length - 1; i >= 0; i--) {
        r <<= 8;
        r |= (buf[i] & 0x00000000000000ff);
      }
    else
      for (int i = 0; i < buf.length; i++) {
        r <<= 8;
        r |= (buf[i] & 0x00000000000000ff);
      }
    return r;
  }

 

/**
* 通信格式转换
*
* Java和一些windows编程语言如c、c++、delphi所写的网络程序进行通讯时,需要进行相应的转换
* 高、低字节之间的转换
* windows的字节序为低字节开头
* linux,unix的字节序为高字节开头
* java则无论平台变化,都是高字节开头
  */ 

public class FormatTransfer {
/**
  * 将int转为低字节在前,高字节在后的byte数组
  * @param n int
  * @return byte[]
  */
public 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;
} 

/**
  * 将int转为高字节在前,低字节在后的byte数组
  * @param n int
  * @return byte[]
  */
public static byte[] toHH(int n) {
  byte[] b = new byte[4];
  b[3] = (byte) (n & 0xff);
  b[2] = (byte) (n >> 8 & 0xff);
  b[1] = (byte) (n >> 16 & 0xff);
  b[0] = (byte) (n >> 24 & 0xff);
  return b;
} 

/**
  * 将short转为低字节在前,高字节在后的byte数组
  * @param n short
  * @return byte[]
  */
public static byte[] toLH(short n) {
  byte[] b = new byte[2];
  b[0] = (byte) (n & 0xff);
  b[1] = (byte) (n >> 8 & 0xff);
  return b;
} 

/**
  * 将short转为高字节在前,低字节在后的byte数组
  * @param n short
  * @return byte[]
  */
public static byte[] toHH(short n) {
  byte[] b = new byte[2];
  b[1] = (byte) (n & 0xff);
  b[0] = (byte) (n >> 8 & 0xff);
  return b;
} 

 

/**
  * 将将int转为高字节在前,低字节在后的byte数组 

public static byte[] toHH(int number) {
  int temp = number;
  byte[] b = new byte[4];
  for (int i = b.length - 1; i > -1; i--) {
    b = new Integer(temp & 0xff).byteValue();
    temp = temp >> 8;
  }
  return b;
} 

public static byte[] IntToByteArray(int i) {
    byte[] abyte0 = new byte[4];
    abyte0[3] = (byte) (0xff & i);
    abyte0[2] = (byte) ((0xff00 & i) >> 8);
    abyte0[1] = (byte) ((0xff0000 & i) >> 16);
    abyte0[0] = (byte) ((0xff000000 & i) >> 24);
    return abyte0;
} 


*/ 

/**
  * 将float转为低字节在前,高字节在后的byte数组
  */
public static byte[] toLH(float f) {
  return toLH(Float.floatToRawIntBits(f));
} 

/**
  * 将float转为高字节在前,低字节在后的byte数组
  */
public static byte[] toHH(float f) {
  return toHH(Float.floatToRawIntBits(f));
} 

/**
  * 将String转为byte数组
  */
public static byte[] stringToBytes(String s, int length) {
  while (s.getBytes().length < length) {
    s += " ";
  }
  return s.getBytes();
} 


/**
  * 将字节数组转换为String
  * @param b byte[]
  * @return String
  */
public static String bytesToString(byte[] b) {
  StringBuffer result = new StringBuffer("");
  int length = b.length;
  for (int i=0; i<length; i++) {
    result.append((char)(b & 0xff));
  }
  return result.toString();
} 

/**
  * 将字符串转换为byte数组
  * @param s String
  * @return byte[]
  */
public static byte[] stringToBytes(String s) {
  return s.getBytes();
} 

/**
  * 将高字节数组转换为int
  * @param b byte[]
  * @return int
  */
public static int hBytesToInt(byte[] b) {
  int s = 0;
  for (int i = 0; i < 3; i++) {
    if (b >= 0) {
    s = s + b;
    } else {
    s = s + 256 + b;
    }
    s = s * 256;
  }
  if (b[3] >= 0) {
    s = s + b[3];
  } else {
    s = s + 256 + b[3];
  }
  return s;
} 

/**
  * 将低字节数组转换为int
  * @param b byte[]
  * @return int
  */
public static int lBytesToInt(byte[] b) {
  int s = 0;
  for (int i = 0; i < 3; i++) {
    if (b[3-i] >= 0) {
    s = s + b[3-i];
    } else {
    s = s + 256 + b[3-i];
    }
    s = s * 256;
  }
  if (b[0] >= 0) {
    s = s + b[0];
  } else {
    s = s + 256 + b[0];
  }
  return s;
} 


/**
  * 高字节数组到short的转换
  * @param b byte[]
  * @return short
  */
public static short hBytesToShort(byte[] b) {
  int s = 0;
  if (b[0] >= 0) {
    s = s + b[0];
    } else {
    s = s + 256 + b[0];
    }
    s = s * 256;
  if (b[1] >= 0) {
    s = s + b[1];
  } else {
    s = s + 256 + b[1];
  }
  short result = (short)s;
  return result;
} 

/**
  * 低字节数组到short的转换
  * @param b byte[]
  * @return short
  */
public static short lBytesToShort(byte[] b) {
  int s = 0;
  if (b[1] >= 0) {
    s = s + b[1];
    } else {
    s = s + 256 + b[1];
    }
    s = s * 256;
  if (b[0] >= 0) {
    s = s + b[0];
  } else {
    s = s + 256 + b[0];
  }
  short result = (short)s;
  return result;
} 

/**
  * 高字节数组转换为float
  * @param b byte[]
  * @return float
  */
public static float hBytesToFloat(byte[] b) {
  int i = 0;
  Float F = new Float(0.0);
  i = ((((b[0]&0xff)<<8 | (b[1]&0xff))<<8) | (b[2]&0xff))<<8 | (b[3]&0xff);
  return F.intBitsToFloat(i);
} 

/**
  * 低字节数组转换为float
  * @param b byte[]
  * @return float
  */
public static float lBytesToFloat(byte[] b) {
  int i = 0;
  Float F = new Float(0.0);
  i = ((((b[3]&0xff)<<8 | (b[2]&0xff))<<8) | (b[1]&0xff))<<8 | (b[0]&0xff);
  return F.intBitsToFloat(i);
} 

/**
  * 将byte数组中的元素倒序排列
  */
public static byte[] bytesReverseOrder(byte[] b) {
  int length = b.length;
  byte[] result = new byte[length];
  for(int i=0; i<length; i++) {
    result[length-i-1] = b;
  }
  return result;
} 

/**
  * 打印byte数组
  */
public static void printBytes(byte[] bb) {
  int length = bb.length;
  for (int i=0; i<length; i++) {
    System.out.print(bb + " ");
  }
  System.out.println("");
} 

public static void logBytes(byte[] bb) {
  int length = bb.length;
  String out = "";
  for (int i=0; i<length; i++) {
    out = out + bb + " ";
  } 

} 

/**
  * 将int类型的值转换为字节序颠倒过来对应的int值
  * @param i int
  * @return int
  */
public static int reverseInt(int i) {
  int result = FormatTransfer.hBytesToInt(FormatTransfer.toLH(i));
  return result;
} 

/**
  * 将short类型的值转换为字节序颠倒过来对应的short值
  * @param s short
  * @return short
  */
public static short reverseShort(short s) {
  short result = FormatTransfer.hBytesToShort(FormatTransfer.toLH(s));
  return result;
} 

/**
  * 将float类型的值转换为字节序颠倒过来对应的float值
  * @param f float
  * @return float
  */
public static float reverseFloat(float f) {
  float result = FormatTransfer.hBytesToFloat(FormatTransfer.toLH(f));
  return result;
} 

}

 

分享到:
评论

相关推荐

    Java中几种常用数据类型之间转换的方法

    Java 中几种常用数据类型之间转换的方法 Java 是一种基于对象的编程语言,它支持多种数据类型之间的转换,这些转换在实际编程...但是,需要注意的是,在进行数据类型转换时,需要考虑到可能出现的精度丢失和溢出问题。

    常见java中数据类型之间的转换.txt

    通过数据类型转换,可以确保不同数据类型之间的兼容性,并满足特定场景下的需求。本文将详细介绍Java中常见的数据类型及其之间的转换方法。 #### 1. `short` 到 `int` **示例代码**: ```java short shortVar = 0;...

    Java 字符串和基本数据类型之间的转换

    在Java编程语言中,字符串(String)和基本数据类型之间的转换是常见的操作,特别是在处理用户输入、格式化输出或解析数据时。以下将详细介绍如何在Java中进行这些转换。 1. **字符串转基本数据类型** - **整型(int...

    Java实验-基本数据类型及操作

    本实验报告将介绍Java中的基本数据类型、数据类型转换、控制台输入输出方法和对话框输入输出方法。 一、基本数据类型 Java中的基本数据类型包括整型(int)、浮点型(float、double)、布尔型(boolean)、字符型...

    Java数据类型和MySql数据类型对应一览

    在 Java 编程语言中,数据类型是指变量或函数可以持有的值的类型。 MySql 数据库也具有其自己的数据类型,用于存储和管理数据。在本文中,我们将对 Java 数据类型和 MySql 数据类型进行对应一览,帮助开发者更好地...

    day02 【数据类型转换、运算符、方法入门】.zip

    在Java这样的强类型语言中,了解并熟练掌握数据类型转换、运算符和方法是成为一名合格的程序员的必经之路。在这个"day02 【数据类型转换、运算符、方法入门】"的学习资料中,我们将深入探讨这些关键概念。 首先,...

    JAVA数据类型思维导图

    在Java编程语言中,数据类型是程序设计的基础,它决定了变量可以存储的值的种类和范围。本资源“JAVA数据类型思维导图”提供了一种直观的方式来理解和记忆Java中的数据类型,包括基本数据类型和引用数据类型。下面将...

    Java数据类型操作包含转换代码实例.rar

    二、数据类型转换的方法 1. 自动类型提升(隐式转换):在运算或赋值时,范围小的类型自动提升为范围大的类型,如int + double会自动将int转换为double进行运算。 2. 强制类型转换(显式转换):需要使用括号将目标...

    2-java语言实验(数据类型_运算符).docx

    Java语言实验(数据类型和运算符) 本实验涵盖了Java语言的基本概念,包括数据类型、运算符和表达式。实验中涉及到变量的命名规则、数据类型的分类、运算符的优先级和结合性、表达式的计算顺序等知识点。 一、变量...

    Java语言基础——Java主类结构、基本数据类型、变量与常量、运算符、数据类型、数据类型转换、代码注释

    Java语言基础——Java主类结构、基本数据类型、变量与常量、运算符、数据类型、数据类型转换、代码注释 写了挺久的,谢谢支持(*^▽^*)

    java 数据类型转换

    在Java编程语言中,数据类型转换是至关重要的概念,它涉及到不同类型的变量之间的相互转化。Java分为两大类数据类型:基本数据类型(如int、char、float等)和引用数据类型(如类、接口和数组)。本文将深入探讨Java...

    java数据类型转换.pdf

    3. 其他实用数据类型转换:这里主要指的是包装类的使用。Java提供了六个包装类,用于将基本数据类型转换为对象,方便进行面向对象的操作。例如,Integer、Float等。通过这些包装类的构造函数,可以将简单数据类型...

    Java byte数组与其他类型转换

    在Java编程语言中,数据类型转换是常见的操作,特别是在处理字节序列时。本文将深入探讨如何在Java中将byte数组与其他基本类型(如short、int、long)进行转换,这些转换在处理二进制数据、网络通信或序列化等方面至...

    理解java中的基本数据类型

    - **显式类型转换**:当需要从较高精度的数据类型转换到较低精度的数据类型时,需要使用显式类型转换。例如: ```java int i = 100; byte b = (byte)i; // 强制转换 System.out.println(b); // 输出100 ``` ### ...

    java中数据类型转换.doc

    在Java编程语言中,数据类型转换是编程过程中常见的操作,主要涉及基本数据类型之间的转换以及基本数据类型与字符串之间的转换。下面将详细讲解这些转换方式。 1. **基本数据类型的转换** Java中的基本数据类型...

    java 数据类型讲解

    本文详细介绍了Java的数据类型及其相关的概念,包括原始数据类型、引用数据类型、数据类型转换、对象包装器类以及字符串等内容。了解这些基础知识对于学习Java编程至关重要,特别是对于初学者来说更是如此。希望本文...

    编程语言java类型转换.pdf

    在Java中,类型转换是将一种数据类型转换为另一种数据类型的过程。这一过程分为两种类型,分别是自动类型转换(隐式类型转换)和强制类型转换(显式类型转换)。在阅读了“编程语言java类型转换.pdf”的部分内容后,...

    java数据类型转换

    在Java编程语言中,数据类型转换是开发过程中一个常见的需求,尤其当涉及到数值类型时,如整型(int)、浮点型(float/double)、字符型(char)以及字符串(String)之间的转换。理解并掌握这些转换规则对于编写...

Global site tag (gtag.js) - Google Analytics