java 是不支持无符号整型 
在jdk1.5 中 int i=07010101; 这样写编译器并没有抱错
但int i=08010101; 这样就抱错有没有人可以给解释一下还有在java中怎么可以把08010101 这样的无符号整型向c#一样写入 new byte[4] 中

解决方案 »

  1.   

    你搞错了,Java中以0开头表示的是8进制!所以08001这样是错误的0x开头才是16进制
    你需要的话可以 int i = 0x08 << 24 | 0x01 << 16 | 0x01 << 8 | 01
      

  2.   

    我现在在写一个协议 协议中是这么定义 08010101
    定长String, 它由一系列的10进制字符组成(ASCII码‘0’---‘9’),右齐左补‘0’(ASCII码48)。
    08010101 是这个协议中的一个字段 协议中它的定长是4个字节
    在c# 中可以把 08010101定义为一个无符号整型就可以解决
    但是在java中要怎么解决哪???
      

  3.   

    按照上面说的它是顶长的10进制String 哪他的长度就是8个字节 郁闷了一上午了有没有可以帮忙解决一下
      

  4.   

    搞不明白,你到底是要整数还是字符串?如果是字符串,你使用Int做什么?如果是Int那么08这个是错误的,因为8进制中不存在8
      

  5.   

    0开头的int数值应该是表示的8进制,但是8进制中是没有8的,最高是7,所以.......
      

  6.   

    还有在java中怎么可以把08010101 这样的无符号整型向c#一样写入 new byte[4] 中
    ----------------------------
    首先,以0打头的数表示8进制数,8进制数最大数字只能到7(即0-7是有效数字),而08xxx中,8已经不是有效数字了,所以就报错了。
    像ChDw(米)说的 
    你需要的话可以 int i = 0x08 << 24 | 0x01 << 16 | 0x01 << 8 | 01
    要存在byte中可以这样
    byte b[] = new byte[4];
    b[0] = 0x08;
    b[1] = 0x01;
    b[2] = 0x01;
    b[3] = 0x01;

    int i = 0x08 << 24 | 0x01 << 16 | 0x01 << 8 | 01
    b[0] = (i & 0xff000000) >> 24;
    b[1] = (i & 0x00ff0000) >> 16;
    b[2] = (i & 0x0000ff00) >> 8;
    b[3] = (i & 0x000000ff);
      

  7.   

    暂时我也是这么解决的
     public static byte[] hexString2byte(String hexString) {
            if (hexString == null || hexString.length() % 2 != 0)
                return null;
            byte[] result = new byte[hexString.length() / 2];
            for (int i = 0; i < hexString.length(); i += 2)
                result[i / 2] = (byte) (Integer.parseInt(hexString.substring(i,
                        i + 2), 10) & 0xff);
            return result;
        }
    但是不知道服务器那边能不能认啊 
    先谢谢大家了 到测试的时候服务器那边不认再向大家请教