㈠ 將byte轉換成int ,java中是怎樣實現的.
你好,在java中由於byte的數值范圍,在int的范圍之內,也就是說int完全容納byte的所有值
所以byte轉int在java中,是完全按byte值來直接賦給int變數,不存在你說的補0或者補1
㈡ JAVA中怎麼將int數據轉換為byte數據
JAVA中根據以下代碼將int數據轉換為byte數據:
public static byte[] int32ToBytes(int val) {
int size = Integer.SIZE / Byte.SIZE;
byte[] ret = new byte[size];
for (int i = 0; i < size; ++i) {
ret[i] = (byte) (val << (8 * i) >> 56);
}
return ret;
}
(2)javabytetointeger擴展閱讀
Java也提供了一個byte數據類型,並且是基本類型。java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。
byte,即位元組,由8位的二進制組成。在Java中,byte類型的數據是8位帶符號的二進制數。在計算機中,8位帶符號二進制數的取值范圍是[-128, 127],所以在Java中,byte類型的取值范圍也是[-128, 127]。
運算規則:
####正數的最高位都是 0 ,正數的值就是二進製表示的值。 ####
####負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到得值。 ####
㈢ JAVA中byte類型的介紹。 謝謝
1、在Java中,byte類型的數據是8位帶符號的二進制數。最高位表示正負,0為正,1為負。
2、java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。
3、正數的最高位都是 0 ,正數的值就是二進製表示的值。
4、負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到的值。
(3)javabytetointeger擴展閱讀
1、java基本數據類型
JAVA中一共有八種基本數據類型,分別是byte、short、int、long、float、double、char、boolean。
2、java各數據類型取值范圍
byte,整型,1個位元組,范圍:-2的7次方 ~ 2的7次方-1;
short,整型,2個位元組,范圍:-2的15次方 ~ 2的15次方-1;
int,整型,4個位元組,范圍:-2的31次方 ~ 2的31次方-1;
long,整型,8個位元組,范圍:-2的63次方 ~ 2的63次方-1;
float,浮點型,4個位元組,范圍:3.402823e+38 ~ 1.401298e-45;
double,浮點型,8個位元組,范圍:1.797693e+308~ 4.9000000e-324;
char,文本型,2個位元組,范圍:0~2的16次方-1;
boolean,布爾型,1個位元組,范圍:true/false;
參考資料
網路-java字元型
㈣ 在java中怎麼把位元組數組轉換成二進制字元串
可以使用Integer類的toBinaryString方法,例如:
bytea=0x45;
StringbinStr=Integer.toBinaryString(a).
API中toBinaryString的解釋:
toBinaryString
public static String toBinaryString(inti)
以二進制(基數 2)無符號整數形式返回一個整數參數的字元串表示形式。
如果參數為負,該無符號整數值為參數加上 232;否則等於該參數。將該值轉換為二進制(基數 2)形式的無前導0的 ASCII 數字字元串。如果無符號數的大小為零,則用一個零字元'0'(』u0030』) 表示它;否則,無符號數大小的表示形式中的第一個字元將不是零字元。字元'0'('u0030') 和'1'('u0031') 被用作二進制數字。
參數:
i- 要轉換為字元串的整數。
返回:
用二進制(基數 2)參數表示的無符號整數值的字元串表示形式。
從以下版本開始:
JDK1.0.2
㈤ java 如何將byte[4]數組轉換成一個int型數據
java中將4位元組的byte數組轉成一個int值的工具方法如下:
/**
* @param byte[]
* @return int
*/
public static int byteArrayToInt(byte[] b){
byte[] a = new byte[4];
int i = a.length - 1,j = b.length - 1;
for (; i >= 0 ; i--,j--) {//從b的尾部(即int值的低位)開始數據
if(j >= 0)
a[i] = b[j];
else
a[i] = 0;//如果b.length不足4,則將高位補0
}
int v0 = (a[0] & 0xff) << 24;//&0xff將byte值無差異轉成int,避免Java自動類型提升後,會保留高位的符號位
int v1 = (a[1] & 0xff) << 16;
int v2 = (a[2] & 0xff) << 8;
int v3 = (a[3] & 0xff) ;
return v0 + v1 + v2 + v3;
}
㈥ java如何把byte數組里的十六進制轉換成int類型,如下圖的數據,雜么轉換,跪求方法和代碼
示例
packagecom.sdvdxl.other;
publicclassTest{
publicstaticvoidmain(String[]args){
byte[]bytes=newbyte[]{0x00,0x53};
for(byteb:bytes){
System.out.println(Integer.valueOf(b));
}
}
}
結果:
0
83
PS : 使用的時候會自動轉換成10進制的
㈦ java為什麼要有integer類型
int是JAVA八大基本數據類型(byte,shor,int,long,char,boolean,float,double)之一。JAVA語言為八大基本數據提供了包裝類,Integer對應是int類型的包裝類,就是把int類型包裝成Object對象。Java有2種不同的類型:引用類型和原始類型。Int是java的原始數據類型,Integer是java的為int提供的封裝類。Java為每個原始類型提供了封裝類。int是基本數據類型Integer是int的一個包裝類(wrapper),他是類不是基本數據類型,他的內部其實包含一個int型的數據那為什麼要用Integer呢,主要是因為面向對象的思想,因為Java語言是面向對象的,這也是它只所以流行的原因之一,對象封裝有很多好處,可以把屬性也就是數據跟處理這些數據的方法結合在一起,比如Integer就有parseInt()等方法來專門處理int型相關的數據,另一個非常重要的原因就是在Java中絕大部分方法或類都是用來處理類類型對象的,如ArrayList集合類就只能以類作為他的存儲對象,而這時如果想把一個int型的數據存入list是不可能的,必須把它包裝成類,也就是Integer才能被List所接受。所以Integer的存在是很必要的。始數據類型引用數據類型oatdoubleDouble引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以那種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例時所指定的預設值。對象引用實例變數的預設值為null,而原始類型實例變數的預設值與它們的類型有關。Integer類的使用方法1、屬性。staticintMAX_VALUE:返回最大的整型數;staticintMIN_VALUE:返回最小的整型數;staticClassTYPE:返回當前類型。例子代碼:System.out.println("Integer.MAX_VALUE:"+Integer.MAX_VALUE);結果為:Integer.MAX_VALUE:21474836472、構造函數。Integer(intvalue):通過一個int的類型構造對象;Integer(Strings):通過一個String的類型構造對象;例子代碼:Integeri=newInteger("1234");生成了一個值為1234的Integer對象。3、方法。說明:1.所有方法均為public;2.書寫格式:[修飾符]如:staticintparseInt(Strings)表示:此方法(parseInt)為類方法(static),返回類型為(int),方法所需參數為String類型。1.byteValue():取得用byte類型表示的整數;2.intcompareTo(IntegeranotherInteger):比較兩個整數。相等時返回0;小於時返回負數;大於時返回正數。例子代碼:Integeri=newInteger(1234);System.out.println("i.compareTo:"+i.compareTo(newInteger(123)));結果為:i.compareTo:13.intcompareTo(Objecto):將該整數與其他類進行比較。如果o也為Integer類,進行方法2的操作;否則,拋出ClassCastException異常。4.staticIntegerdecode(Stringnm):將字元串轉換為整數。5.doubledoubleValue():取得該整數的雙精度表示。6.booleanequals(Objectobj):比較兩個對象。7.floatfloatValue():取得該整數的浮點數表示。8.staticIntegergetInteger(Stringnm):根據指定名確定系統特徵值。9.staticIntegergetInteger(Stringnm,intval):上面的重載。10.staticIntegergetInteger(Stringnm,Integerval):上面的重載。11.inthashCode():返回該整數類型的哈希表碼。12.intintValue():返回該整型數所表示的整數。13.longlongValue():返回該整型數所表示的長整數。14.staticintparseInt(Strings):將字元串轉換成整數。s必須是時進制數組成,否則拋出NumberFormatException異常。15.staticintparseInt(Strings,intradix):以radix為基數radix返回s的十進制數。所謂的基數就是「幾進制」。例子代碼:Strings1=newString("1010");System.out.println("Integer.parseInt(Strings,intradix):"+Integer.parseInt(s1,2));結果為:Integer.parseInt(Strings,intradix):10即s1在此例中被看成是二進制,返回十進制就是10。16.shortshortValue():返回該整型數所表示的短整數。17.staticStringtoBinaryString(inti):將整數轉為二進制數的字元串。18.staticStringtoHexString(inti):將整數轉為十六進制數的字元串。19.staticStringtoOctalString(inti):將整數轉為八進制數的字元串。20.StringtoString():將該整數類型轉換為字元串。21.staticStringtoString(inti):將該整數類型轉換為字元串。不同的是,此為類方法。22.staticStringtoString(inti,intradix):將整數i以基數radix的形式轉換成字元串。例子代碼:inti1=54321;System.out.println("Integer.toString(inti,intradix):"+Integer.toString(i1,16));結果為:Integer.toString(inti,intradix):d43123.staticIntegervalueOf(Strings):將字元串轉換成整數類型。24.staticIntegervalueOf(Strings,intradix):將字元串以基數radix的要求轉換成整數類型。
㈧ 求教如何將一個java的byte數組快速轉換為int數組
public class ByteUtil {
/**
* 將 Little-Endian 的位元組數組轉為 int 類型的數據<br />
* Little-Endian 表示高位位元組在高位索引中
* @param bys 位元組數組
* @param start 需要轉換的開始索引位數
* @param len 需要轉換的位元組數量
* @return 指定開始位置和長度以 LE 方式表示的 int 數值
*/
public static int bytes2IntLE(byte[] bys, int start, int len) {
return bytes2Int(bys, start, len, false);
}
public static int bytes2IntLE(byte[] bys) {
return bytes2Int(bys, 0, bys.length, false);
}
/**
* 將 Big-Endian 的位元組數組轉為 int 類型的數據<br />
* Big-Endian 表示高位位元組在低位索引中
* @param bys 位元組數組
* @param start 需要轉換的開始索引位數
* @param len 需要轉換的位元組數量
* @return 指定開始位置和長度以 BE 方式表示的 int 數值
*/
public static int bytes2IntBE(byte[] bys, int start, int len) {
return bytes2Int(bys, start, len, true);
}
public static int bytes2IntBE(byte[] bys) {
return bytes2Int(bys, 0, bys.length, true);
}
/**
* 將位元組數組轉為 Java 中的 int 數值
* @param bys 位元組數組
* @param start 需要轉換的起始索引點
* @param len 需要轉換的位元組長度
* @param isBigEndian 是否是 BE(true -- BE 序,false -- LE 序)
* @return
*/
private static int bytes2Int(byte[] bys, int start, int len,
boolean isBigEndian) {
int n = 0;
for(int i = start, k = start + len % (Integer.SIZE / Byte.SIZE + 1); i < k; i++) {
n |= (bys[i] & 0xff) << ((isBigEndian ? (k - i - 1) : i) * Byte.SIZE);
}
return n;
}
}
㈨ Java:byte轉換為整型,是如何補位的呢
你好:試試下面的方法
public static void main(String args[]){
String s = "101011110001";
int x = 0;
for(char c: s.toCharArray())
x = x * 2 + (c == '1' ? 1 : 0);
System.out.println(x);
}
㈩ 求java編程 位元組byte怎麼轉換成整形int
1.byte的大小為8bits而int的大小為32bits
2.java的二進制採用的是補碼形式
在這里先溫習下計算機基礎理論
byte是一個位元組保存的,有8個位,即8個0、1。
8位的第一個位是符號位,
也就是說00000001代表的是數字1
10000000代表的就是-1
所以正數最大位01111111,也就是數字127
負數最大為11111111,也就是數字-128
上面說的是二進制原碼,但是在java中採用的是補碼的形式,下面介紹下什麼是補碼
1、反碼:
一個數如果是正,則它的反碼與原碼相同;
一個數如果是負,則符號位為1,其餘各位是對原碼取反;
2、補碼:利用溢出,我們可以將減法變成加法
對於十進制數,從9得到5可用減法:
9-4=5因為4+6=10,我們可以將6作為4的補數
改寫為加法:
9+6=15(去掉高位1,也就是減10)得到5.
對於十六進制數,從c到5可用減法:
c-7=5因為7+9=16將9作為7的補數
改寫為加法:
c+9=15(去掉高位1,也就是減16)得到5.
在計算機中,如果我們用1個位元組表示一個數,一個位元組有8位,超過8位就進1,在內存中情況為(100000000),進位1被丟棄。
⑴一個數為正,則它的原碼、反碼、補碼相同
⑵一個數為負,剛符號位為1,其餘各位是對原碼取反,然後整個數加1
-1的原碼為10000001
-1的反碼為11111110
+1
-1的補碼為11111111
0的原碼為00000000
0的反碼為11111111(正零和負零的反碼相同)
+1
0的補碼為100000000(舍掉打頭的1,正零和負零的補碼相同)
Integer.toHexString的參數是int,如果不進行&0xff,那麼當一個byte會轉換成int時,由於int是32位,而byte只有8位這時會進行補位,
例如補碼11111111的十進制數為-1轉換為int時變為好多1啊,呵呵!即0xffffffff但是這個數是不對的,這種補位就會造成誤差。
和0xff相與後,高24比特就會被清0了,結果就對了。
----
Java中的一個byte,其范圍是-128~127的,而Integer.toHexString的參數本來是int,如果不進行&0xff,那麼當一個byte會轉換成int時,對於負數,會做位擴展,舉例來說,一個byte的-1(即0xff),會被轉換成int的-1(即0xffffffff),那麼轉化出的結果就不是我們想要的了。
而0xff默認是整形,所以,一個byte跟0xff相與會先將那個byte轉化成整形運算,這樣,結果中的高的24個比特就總會被清0,於是結果總是我們想要的。
來自博客友zhouyong0的分享