最近需要弄一个c#与java互通的软件,其中用到byte[]
为什么可以在c#中定义byte[] x = {0x99};
0x99已经大于127(byte范围-128~127)了,在java中就会要求强制转换(转换后就不是原来的16进制数值了)
所以我想问下,在java中怎么定义一个byte[],其中包含大于127的16进制数还有就是有没有什么方法直接可以把int或者byte转换为16进制
比如99,转换成0x63
为什么可以在c#中定义byte[] x = {0x99};
0x99已经大于127(byte范围-128~127)了,在java中就会要求强制转换(转换后就不是原来的16进制数值了)
所以我想问下,在java中怎么定义一个byte[],其中包含大于127的16进制数还有就是有没有什么方法直接可以把int或者byte转换为16进制
比如99,转换成0x63
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式
可以不?
比如:
byte[] x = new byte[1];
x[0] = 方法(99);
System.out.println(x[0]);
结果直接是0x63
在java中定义一个byte[],其中包含大于127的16进制数 好像必须要强制类型装换
可以转换成十六进制的String类型表示形式:Integer.toHexString(99) 不过前面可没有"0x"这东西 想要就得连接
用String的getBytes方法。
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;
}
}
}
}