Chinaunix首页 | 论坛 | 博客
  • 博客访问: 648981
  • 博文数量: 45
  • 博客积分: 931
  • 博客等级: 准尉
  • 技术积分: 590
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-17 13:27
文章分类

全部博文(45)

文章存档

2013年(6)

2012年(15)

2011年(23)

2005年(1)

分类: Java

2011-11-18 16:28:50

虽然Java之中的内存分配都Java本身都已经处理好了,不存在Big Endian和Little Endian的区别。但是,在一些特殊的情况下,我们任然需要知道CPU到底是big endian或者little endian。

Java里面可以直接的调用java.nio.ByteOrder类的方法nativeOrder()方法,下面的是我的测试代码:


  1. import java.nio.ByteOrder;

  2. public class TestCPU {
  3.   public static void main(String[] args) {
  4.     if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {
  5.       System.out.println("BIG_ENDIAN");
  6.     } else {
  7.       System.out.println("LITTLE_ENDIAN");
  8.     }
  9.   }
  10. }
在Windows Intel上输出的结果是:
  LITTLE_ENDIAN

在AIX PPC64上面的输出结果是:

=> java TestCPU
BIG_ENDIAN


===
下面是C语言中的作法:


点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     union ut{
  5.         short s;
  6.         char c[2];
  7.     }u;
  8.     
  9.     if(sizeof(short) == 2)
  10.     {
  11.         u.s = 0x0102;
  12.         if(u.c[0] == 1 && u.c[1] == 2)
  13.         {
  14.             printf("big enidan.\n");
  15.         } else if(u.c[0] == 2 && u.c[1] == 1)
  16.         {
  17.             printf("little endian.\n");
  18.         }
  19.     }
  20.     return 0;
  21. }


阅读(15341) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

☆彼岸★花开2011-11-19 19:08:18

Java里面可以直接的调用java.nio.ByteOrder类
( ^_^ )不错嘛