A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 fiend 于 2012-7-28 09:29 编辑

RT,如何将一个Byte类型的数据,存入到一个int类型数据的第二个字节中。希望会的同学解答一下,谢谢。

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
本帖最后由 柳雷 于 2012-7-28 09:13 编辑

你可以借助字符串构造好再传到int中。我写了一个代码:
  1. public class Test {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 byte a=1;
  8.                 byte b=0;
  9.                 int c=(b<<24)|(a<<16)|(b<<8)|b;
  10.                 System.out.println(b);
  11.         }
  12. }
复制代码
运行结果:

加了一句System.out.println(Integer.toHexString(c));的运行结果是:

刚好是加到了第二个字节

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
明白了,谢谢。
回复 使用道具 举报

int i = 1023;0000-0000 0000-0000 0000-0011 1111-1111
byte = 1;                                         0000-0001
--------------------------------------------------------------------
                   0000-0000 0000-0000 0000-0100 1111-1111
class Test2
{
     public static void main(String[] args)
   {
    int i = 1023;
    byte b = 1;
    int t = i & 255;//先将i的第一字节中的数据取出,存在临时变量t中
    i = i >>> 8;//将i右移8位,i原先的第二个字节变成第一个字节
    i = i + b;//把b存入i的第一个字节中(原先是第二个字节)
    i = i << 8;//将i左移8位
    i = i + t;//将i原先第一个字节中的数据存入i中
    System.out.println(i);
}
}
i:                                     0000-0000 0000-0000 0000-0011 1111-1111
右移八位变成 0000-0000 0000-0000 0000-0000 0000-0011
把b存入i中:                                                          0000-0001
--------------------------------------------------------------------------------------------
                       0000-0000 0000-0000 0000-0000 0000-0100
把i左移八位     0000-0000 0000-0000 0000-0100 0000-0000
                       0000-0000 0000-0000 0000-0000 1111-1111把i原先的第一个字节中的数据存入
-----------------------------------------------------------------------------------
                       0000-0000 0000-0000 0000-0100 1111-1111

运行后的结果:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马