java中int如何转换byte

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中int如何转换byte相关的知识,希望对你有一定的参考价值。

int z=257;
byte x=(byte)z;
为什么x等于1
希望能帮我详细解答下、

因为在java中,int类型的占4个字节,而byte占1个字节,所以int类型转化为byte类型时会出现位丢失情况,即将int的低8位作为byte类型的值。int型变量的值为257,对应的二进制是100000001,后8位是00000001,第一个0表示符号位,表示正数,所以变量x的值为1。 参考技术A int z = 257;//257转换成二进制是 1 00000001.
byte 占1个字节,只能截取后 8位,也就是 00000001.
二进制的 0000001 就是 十进制的 1.
参考技术B 没错啊!就应该这样啊!希望采纳谢谢合作!
public class test
public static void main(String[] args)
int a=124;
byte b=(byte) a;
System.out.println(b);



你试下没错啊!
参考技术C BYTE B=(byte)(0XFF & int 数据);
如果数据比较大用左右移来 转就可以了

java中如何让byte[]与string类型转换后,保持不变

在android中我从网络(通过图片网址)上获得几张图片后,我想进入下一个activity时,把这几张图片传过去,可是我想以列表list传过去,可是android的activity中intent中只能传arrayList<string>类型,我想将得到的byte【】转换成string后传过去,但到那边不可以用了。public class AnroidTestActivity extends Activity
private EditText imagePathText;
private static final String TAG="DataActivity";
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imagePathText = (EditText) findViewById(R.id.editText1);
imageView=(ImageView)findViewById(R.id.imageView1);

//获取我的宝马车图片
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String path = imagePathText.getText().toString();
try

byte[] data=NetTool.getImage(path);
System.out.println(data.length);
Bitmap bm=BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bm);
String string=bytesToString(data);

List<String>list=new ArrayList<String>();
list.add(string);
System.out.println("转换后得到的数据:"+list.get(0));
System.out.println("转换后得到的数据:"+list.get(0).length());
Intent intent=new Intent();
intent.putStringArrayListExtra("list", (ArrayList<String>) list);
intent.setClass(AnroidTestActivity.this,TestIntent.class);
startActivity(intent);
catch (Exception e)
Log.i(TAG, e.toString());
Toast.makeText(AnroidTestActivity.this, "获得图片失败", 1).show();


);

// 获取网页源代码


//将byte【】类型转换成string类型
public static String bytesToString(byte[] b)
StringBuffer result = new StringBuffer("");
int length = b.length;
for (int i = 0; i < length; i++)
result.append((char)(b[i] & 0xff));

return result.toString();


public class TestIntent extends Activity
private ImageView imageView;
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
imageView=(ImageView)findViewById(R.id.test_imageView1);
Intent intent=getIntent();
List<String> list=new ArrayList<String>();
list=(ArrayList<String>)intent.getStringArrayListExtra("list");
System.out.println("转换后得到的数据:"+list.get(0));
System.out.println("转换后得到的数据:"+list.get(0).length());
byte[]data= list.get(0).getBytes();
System.out.println(data.length);
Bitmap bm=BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bm);

/** * 将String转为byte数组 */
// public static byte[] stringToBytes(String s, int length)
// while (s.getBytes
//
// ().length < length)
// s += "";
//
// return s.getBytes();
//

String.getBytes()是取决于本地缺省编码的,两边不一样就抓瞎了。你这种情况其实是要传byte[],这样硬生生转成String总觉得太危险,一般的做法是弄成比如Base64这样的7bits编码。现成的有sun.misc.BASE64Encoder和sun.misc.BASE64Decoder。追问

怎么用啊

追答

编码就是
byte[] bs = ...;
BASE64Encoder enc = new BASE64Encoder();
String s = enc.encodeBuffer(bs);
解码就是
String s = ...;
BASE64Decoder dec = new BASE64Decoder();
byte[] newbs = dec.decodeBuffer(s);
不过android下有没有这两个包我不知道,但是Base64的编码解码器源码网上不少,也不是很长,自己加也可以。

参考技术A 建议不要转换成String,图片读取只用byte或者byte[]不会出错。
byte[]转换String时使用举例
byte[] bytes = new byte[](byte) 0x03,(byte) 0x04,;

String targetStr = new String(bytes, "UTF-8")
其中"UTF-8"是转码参数,不写的话会按系统默认转码,这就说明byte[]转换String时,
出现特殊字符,即半角英文 数字 半角符号以外的特殊字符,如汉字 特殊符号等时,
如果编码设定不对的话,二进制编码将无法保持一致。
代码中的方法public static String bytesToString(byte[] b) 应该一样存在这个问题。追问

那应该如何通过intent的来传递图片呢?如果是一张图片可以用byte【】传,可我一次传几张怎么做呀?

追答

你的问题我不是很清楚,你的意思是一次选取多个图形文件传输么?
如果是这个意思的话,有两种办法:
第一种,以单独传送图片的机制 循环发送。
第二种,传送时每个文件中间加特殊分割字段,类似于大型机数据的“数据头”。这时需要接受方有一样的解析方式,按照数据头分割文件。

参考技术B 只是一个思路,你在这个Activity里把流转换成Bitmap,再放到集合里,传过去。

以上是关于java中int如何转换byte的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中int强制转换byte

JAVA中int强制转换byte

java中byte[]转换成int

在java中,如何将byte转为string

如何将 int[] 转换为 byte[]

java中int与byte相互转换