最近需要弄一个c#与java互通的软件,其中用到byte[]
为什么可以在c#中定义byte[] x = {0x99};
0x99已经大于127(byte范围-128~127)了,在java中就会要求强制转换(转换后就不是原来的16进制数值了)
所以我想问下,在java中怎么定义一个byte[],其中包含大于127的16进制数还有就是有没有什么方法直接可以把int或者byte转换为16进制
比如99,转换成0x63

解决方案 »

  1.   

    java中的api函数 Integer.toHexString(int i) 
    以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式
    可以不?
      

  2.   

    这个方法返回string,要能直接被byte[]接受,或者能够被强转
    比如:
    byte[] x = new byte[1];
    x[0] = 方法(99);
    System.out.println(x[0]);
    结果直接是0x63
      

  3.   

    C#不懂
    在java中定义一个byte[],其中包含大于127的16进制数 好像必须要强制类型装换
    可以转换成十六进制的String类型表示形式:Integer.toHexString(99) 不过前面可没有"0x"这东西  想要就得连接
      

  4.   

    你都能得到十六进制的字符串了,怎么就不能得到byte数组呢?
    用String的getBytes方法。
      

  5.   

    String.getBytes的返回值是一个byte[],我要得到的是一个int或者byte的值
      

  6.   

    十进制数转化成十六进制数的java代码
    public class NumberTurning{
      public String tenToSixteen(int a){//a转换成十六进制数
        String[] s={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
        StringBuffer b=new StringBuffer();
        while(true){
          b=b.append(s[a&15]);//a在内存中保存的是2进制,15在内存中保存的是:1111(2进制)。a和15与运算得到的是a的后四位的数字,对应数组s中的下标。
          a=a>>4;
          if(a==0){
             break;
          }
        }
      }
    }