Ⅰ java 中各种数据类型转换byte[]的方法
ObjectOutputStream oos = null;//对象输出流
ByteArrayOutputStream baos = null;//byte数组输出流
ByteArrayInputStream s = null;//对象输入流
try {
//序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);//将数组流传入对象流
oos.writeObject(new Integer(1));//用对象流读取对象。
byte[] bytes = baos.toByteArray();//用数组流将传入的对象转化为byte数组
//反序列化
s = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(s);
Integer i = (Integer)ois.readObject();
System.out.println(i);
} catch (Exception e) {
}以上是把integer类型转化成byte[]数组类型。注:基本类型要转化为byte[]数组的话,需要用该基本类型的引用类。比如int的引用类是integer,就行了所有的类型,包括class都可以用这种序列化方式来转成byte[],
Ⅱ 在Java中int转byte类型,超出byte的范围该如何计算,答案尽可能详细
程序要尽量避免溢出,这是原则,一旦溢出,再去研究值是什么已经没有意内义。
以下大容概给你说明一下:
一个字节byte长8位,也就是2的8次方,换成2进制后就是
00000000~11111111
取值范围就是那么多,10进制就是0~255。
如果更长的类型如int转成更短的类型,那么只保留短类型那么多长度的数据。
假设类型A为9位,其某变量值为
0 1111 1111,10进制为255,转成byte正好也是255
假设类型A变量值为
1 0000 0000 ,换算成10进制为256,转成byte为0
其中具体是截断前面还是后面,是根据编译工具和版本来决定的,不同的语言可能会有不同的定义。
这样说你大概可以明白了吧?
Ⅲ 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;
}
(3)javaint转为byte数组扩展阅读
Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。
byte,颤罩即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。樱坦
运算规则:
####正数的最高位都是 0 ,正数的值就是二进制表示的值。 ####
####负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。 ####
Ⅳ 在java中如何将全为数字的字符串转化为byte数组
public class DigitsString{
public static void main(String[] args){
String s="99999";
byte[] bytes=s.getBytes();
for(int i=bytes.length-1;i>=0;i--){
bytes[i]-=(byte)'0';
}
for(int i=0;i<bytes.length;i++){
System.out.print(bytes[i]);
}
System.out.println();
}
}
一楼二楼的字节数组中元素的值不是对应数位的值,是数专位的ASCII码,根本不符合题属意
Ⅳ JAVA里int型强制转化成byte型
因为java的byte类型只占一个字节,即2的8次方,碰指表笑者配示的范围是0~127,128溢出了当做0,129为1,以此类推。所以 257转换为byte后的值为:嫌基257-128-128=1323转换为byte后:323-128-128=67
Ⅵ java中int转换byte型
下面这个解答不是我写的,我也在看,还不是很明白,但这个解答是正确的:
这个是编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。
所以对于128和-129,他们的编码分别是:
0000 0000 0000 0000 0000 0000 1000 0000
1111 1111 1111 1111 1111 1111 0111 1111。
对于a来说,1000 0000是负数(第一位为1),它的绝对值是1000 0000即128,
而对于b来说,0111 1111是正数,值为127。
————————————————————————————————————
0 00000000
1 00000001
... ........
127 01111111
----------------
共 128 个
-1 11111111
-2 11111110
... ........
-128 10000000
----------------
共 128 个
我们都知道byte占8位。而2的8次方等于256,也就是byte最多可以表示256个不同的数,
0~127:128个
-0~127:128个
但是这里0与-0表示一样的数了,所以就用-0的二进制补码表示到-128里面去了