黑马程序员技术交流社区

标题: StingBuffer存贮10转16 [打印本页]

作者: 戒爱    时间: 2014-2-8 00:15
标题: StingBuffer存贮10转16
本帖最后由 戒爱 于 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());
}

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

作者: ♫梦想起航♫    时间: 2014-2-8 04:25
不好意思,没懂你的意思,还是上代码容易看懂些.
作者: 戒爱    时间: 2014-2-8 13:28
♫梦想起航♫ 发表于 2014-2-8 04:25
不好意思,没懂你的意思,还是上代码容易看懂些.

我加上代码了,在使用char[]作为临时存贮后,我试着使用StringBuffer,我需要60转后的结果是----0312可是结果打印出来是:------0321
作者: e.c    时间: 2014-2-8 14:07
是拆开存的
十六进制10-15用a-f表示


作者: 周昭民    时间: 2014-2-8 15:00
  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

作者: 张志明    时间: 2014-2-8 21:24
StringBuffer是拆开存的

作者: 廉伟杰    时间: 2014-2-8 21:50
分开存的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2