① java system.out.print(byte)輸出以int來輸出 java里的小於int 的類型都是以int 輸出嗎
不對,byte是一個位元組8位的二進制存儲(不超過256),在輸出時是十進制,所以感覺是int
② java byte數組 怎麼列印
java byte 數組,可以使用Array類提供的方法遍歷輸出列印,示例如下:
publicclassceshi{
publicstaticvoidmain(String[]args){
byte[]b=newbyte[12]('0x97','0x98');//byte數組
System.out.println(Arrays.toString(b));//位元組數組列印
}
}
輸出結果為:a,b
③ java我從一個文件獲取到了我想要的一個位元組數組裡面是16進制的2個數 4個位元組怎麼把它列印出來是和文件一
/**
* 將指定byte數組以16進制的形式列印到控制台
* @param hint String
* @param b byte[]
* @return void
*/
public static void printHexString(String hint, byte[] b) {
System.out.print(hint);
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}
/**
*
* @param b byte[]
* @return String
*/
public static String Bytes2HexString(byte[] b) {
String ret = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
return ret;
}
/**
* 將兩個ASCII字元合成一個位元組;
* 如:"EF"--> 0xEF
* @param src0 byte
* @param src1 byte
* @return byte
*/
public static byte uniteBytes(byte src0, byte src1) {
byte _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue();
_b0 = (byte)(_b0 << 4);
byte _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue();
byte ret = (byte)(_b0 ^ _b1);
return ret;
}
/**
* 將指定字元串src,以每兩個字元分割轉換為16進制形式
* 如:"2B44EFD9" --> byte[]{0x2B, 0x44, 0xEF, 0xD9}
* @param src String
* @return byte[]
*/
public static byte[] HexString2Bytes(String src){
byte[] ret = new byte[8];
byte[] tmp = src.getBytes();
for(int i=0; i<8; i++){
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
}
return ret;
}
詳細出處參考:http://www.jb51.net/article/18146.htm
④ JAVA中數值以二進制輸出BYTE類型的數值為什麼是四個位元組呢
String s=Integer.toBinaryString(b) ; //因這個是按整數來進行處理的,所以會是按四位元組輸出,需要處理一下
System.out.println( s.substring(s.length()-8) );
⑤ java 輸出byte[]出現亂碼
byte[] ba數組可以理解成是byte的類,ba的是個對象,10,50可以看出對象的二個成員變數,你要調用對象的某個成員變數,有對應的方法,那麼要訪問數組裡面的數據就要要用ba[i]這個方法才可以調用。ba在棧裡面存放的是hashcode碼,這個碼可以在堆內存裡面找到一塊空間,裡面存放這10和50這2個數,System.out.println(ba);這個句子只能輸出ba裡面存的hashcode碼,所以你只能得到[B@18a992f這個碼。
⑥ java把一個byte類型的數據的每一位都輸出怎麼做
//方法一
publicclassTest{
publicstaticvoidmain(String[]args){
bytea=123;
char[]arr=String.valueOf(a).toCharArray();
for(inti=0;i<arr.length;i++){
System.out.print(arr[i]+"");
}
}
}
//方法二
publicclassTest{
publicstaticvoidmain(String[]args){
bytea=123;
Stringstr=String.valueOf(a);
for(inti=0;i<str.length();i++){
System.out.print(str.substring(i,(i+1))+"");
}
}
}
//方法三
publicclassTest{
publicstaticvoidmain(String[]args){
bytea=123;
Byteb=newByte(a);
System.out.println(b.byteValue());
}
}
⑦ java如何得到列印出一個byte的二進制形式,toBinaryString()列印出來的是32位,怎麼列印出一個8位的
這個,你的數字占幾位,Integer.toBinaryString打出來就是幾位的啊,比如:
System.out.println(Integer.toBinaryString(10));
運行的結果就是:1010
只有4位的
⑧ java 的byte數組與漢字輸出
String在Java是字元數組,他的字元是使用Unicode字元來構建的。
String s=new String(byteArray);
是把數組byteArray[]的值初始化給了s,所以s是一個把byte類型的數據轉化為Unicode字元數組的字元串。