Utility for byte swapping of all java data types : 二进位 « 语言基础知识 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 语言基础知识 » 二进位屏幕截图 
Utility for byte swapping of all java data types
 

/*
 * (C) 2004 - Geotechnical Software Services
 
 * This code is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public 
 * License as published by the Free Software Foundation; either 
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This code is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public 
 * License along with this program; if not, write to the Free 
 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 
 * MA  02111-1307, USA.
 */
//package no.geosoft.cc.util;



/**
 * Utility class for doing byte swapping (i.e. conversion between
 * little-endian and big-endian representations) of different data types.
 * Byte swapping is typically used when data is read from a stream 
 * delivered by a system of different endian type as the present one.
 
 @author <a href="mailto:jacob.dreyer@geosoft.no">Jacob Dreyer</a>
 */   
public class ByteSwapper
{
  /**
   * Byte swap a single short value.
   
   @param value  Value to byte swap.
   @return       Byte swapped representation.
   */
  public static short swap (short value)
  {
    int b1 = value & 0xff;
    int b2 = (value >> 80xff;

    return (short) (b1 << | b2 << 0);
  }

  

  /**
   * Byte swap a single int value.
   
   @param value  Value to byte swap.
   @return       Byte swapped representation.
   */
  public static int swap (int value)
  {
    int b1 = (value >>  00xff;
    int b2 = (value >>  80xff;
    int b3 = (value >> 160xff;
    int b4 = (value >> 240xff;

    return b1 << 24 | b2 << 16 | b3 << | b4 << 0;
  }

  

  /**
   * Byte swap a single long value.
   
   @param value  Value to byte swap.
   @return       Byte swapped representation.
   */
  public static long swap (long value)
  {
    long b1 = (value >>  00xff;
    long b2 = (value >>  80xff;
    long b3 = (value >> 160xff;
    long b4 = (value >> 240xff;
    long b5 = (value >> 320xff;
    long b6 = (value >> 400xff;
    long b7 = (value >> 480xff;
    long b8 = (value >> 560xff;

    return b1 << 56 | b2 << 48 | b3 << 40 | b4 << 32 |
           b5 << 24 | b6 << 16 | b7 <<  | b8 <<  0;
  }
  

  
  /**
   * Byte swap a single float value.
   
   @param value  Value to byte swap.
   @return       Byte swapped representation.
   */
  public static float swap (float value)
  {
    int intValue = Float.floatToIntBits (value);
    intValue = swap (intValue);
    return Float.intBitsToFloat (intValue);
  }

  

  /**
   * Byte swap a single double value.
   
   @param value  Value to byte swap.
   @return       Byte swapped representation.
   */
  public static double swap (double value)
  {
    long longValue = Double.doubleToLongBits (value);
    longValue = swap (longValue);
    return Double.longBitsToDouble (longValue);
  }


  
  /**
   * Byte swap an array of shorts. The result of the swapping
   * is put back into the specified array.
   *
   @param array  Array of values to swap
   */
  public static void swap (short[] array)
  {
    for (int i = 0; i < array.length; i++)
      array[i= swap (array[i]);
  }

  
  
  /**
   * Byte swap an array of ints. The result of the swapping
   * is put back into the specified array.
   
   @param array  Array of values to swap
   */
  public static void swap (int[] array)
  {
    for (int i = 0; i < array.length; i++)
      array[i= swap (array[i]);
  }


  
  /**
   * Byte swap an array of longs. The result of the swapping
   * is put back into the specified array.
   
   @param array  Array of values to swap
   */
  public static void swap (long[] array)
  {
    for (int i = 0; i < array.length; i++)
      array[i= swap (array[i]);
  }


  
  /**
   * Byte swap an array of floats. The result of the swapping
   * is put back into the specified array.
   
   @param array  Array of values to swap
   */
  public static void swap (float[] array)
  {
    for (int i = 0; i < array.length; i++)
      array[i= swap (array[i]);
  }


  
  /**
   * Byte swap an array of doubles. The result of the swapping
   * is put back into the specified array.
   
   @param array  Array of values to swap
   */
  public static void swap (double[] array)
  {
    for (int i = 0; i < array.length; i++)
      array[i= swap (array[i]);
  }
}


           
         
  
Related examples in the same category
1. 位演示位演示
2. Binary Digits
3. 使用按位运算符使用按位运算符
4. 位补充(~) :数字中颠倒的一和零
5. 转换了一些数字为负数
6. 位运算符及( & )
7. 按位或( | )
8. 按位异或( ^ )
9. 左移( << )
10. Performing Bitwise Operations on a Bit Vector
11. 转换位集合和一个字节数组
12. 返回一个字节数组的长度至少为1
13. 转移到左侧
14. 有标记移位
15. 无有标记移位
16. Bit-level unpacking of floating-point data
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.