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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戒爱 中级黑马   /  2014-2-8 00:15  /  1404 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 戒爱 于 2014-2-8 13:22 编辑

StingBuffer存贮10转16的过程中 0 12 3
以反过来怎么就成3 21 0了呢,StringBuffer是把12拆开存储的吗?
------------------补加代码-------------------
public static void toHe(int x) {
        StringBuffer sb = new StringBuffer();
                while(x>15) {
                        sb.append(x&15);
                        x = x >>> 4;
                }       
                for(int i=0;i<8;i++) {
                        int n = x&15;
                        sb.append((int)n);
                x = x >>> 4;
                }
                System.out.print(sb.reverse());
}

---------------------------------------------

评分

参与人数 1技术分 +1 收起 理由
黄晓东 + 1

查看全部评分

6 个回复

倒序浏览
不好意思,没懂你的意思,还是上代码容易看懂些.
回复 使用道具 举报
♫梦想起航♫ 发表于 2014-2-8 04:25
不好意思,没懂你的意思,还是上代码容易看懂些.

我加上代码了,在使用char[]作为临时存贮后,我试着使用StringBuffer,我需要60转后的结果是----0312可是结果打印出来是:------0321
回复 使用道具 举报
是拆开存的
十六进制10-15用a-f表示

回复 使用道具 举报
  1. while(x>15) {
  2.                                                 if((x&15)>9)
  3.                                                         sb.append((char)(((x&15)-10)+'a'));
  4.                                                 else       
  5.                                                         sb.append(x&15);
  6.                                                 x = x >>> 4;
  7.                                         }        
复制代码


中间改成这样吧,你用toString()方法打印出反转前的结果就知道了,

sb.toString() 打印反转前的结果为1230000000
sb.reverse()  打印反转后的结果为0000000321

只要你在反转前把12转为十六进制的形式,结果就没错了 00000003c

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
戒爱 + 2 很给力!
黄晓东 + 1

查看全部评分

回复 使用道具 举报
StringBuffer是拆开存的
回复 使用道具 举报
分开存的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马