java数组进制转换八进制_Java_数组之进制转换

1 1,使用数组2 /*

3 进制转换 使用数组4

5 定义一个功能,打印一个十进制数转对应16进制表现形式6 */

7

8 classArrayTest49 {10 public static voidmain(String[] args)11 {12 toHex(60);13 }14 /*

15 定义一个功能,打印一个十进制数转对应16进制表现形式16

17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1518 0 1 2 3 4 5 6 7 8 9 A B C D E F19 48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 7020

21

22

23

24 什么时候使用数组?25 当同一类型的元素较多时,就是用数组这个容器对数据进行存储26

27 */

28 public static void toHex(intnum)29 {30 //定义一个char类型的数组,用于存储每次获取到的十六进制值

31 char[] chs=new char[8];32 int pos =chs.length;33 while(num!=0)34 {35 pos--;36 int temp =num & 15;37 if (temp>9)38 {39 chs[pos]=(char)(temp-10+'A');40 }41 else

42 chs[pos]=(char)(temp-0+'0');43 num = num >>> 4;44 }45 System.out.println("pos="+pos);46 //打印数组内容

47 for (int x=pos;x

51 }52 }53 }54

55

56

57

58 2,查表法59 /*

60 进制转换 查表法61

62 定义一个功能,打印一个十进制数转对应16进制表现形式63 */

64

65 classArrayTest566 {67 public static voidmain(String[] args)68 {69 toHex2(60);70 }71 /*

72 定义一个功能,打印一个十进制数转对应16进制表现形式73

74 10进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1575 16进制 0 1 2 3 4 5 6 7 8 9 A B C D E F76 num-10+'A'的动作不太容易想到77 我们可以换另一种想法78 我们发现,十六进制中一共有16个元素79 而且没通过&15获取的数字都在15之内,都有对应的十六进制元素80

81 而且元素对应的数组,正好有规律,而且符合了数组这种容器的特点---角标82

83 那么就可以将十六进制的元素都存储到数组中84 将每次&15的结果作为角标去查这个数组,就可以获取到十六进制的对应的元素;85

86 这就是传说中的查表法;87

88 什么时候使用查表法呢?89 当元素很多,而且这些元素与数字有对应关系,而且这些数字都有角标的规律90 这时,优先想到查表法。91

92 二进制表 48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 7093

94

95

96

97 什么时候使用数组?98 当同一类型的元素较多时,就是用数组这个容器对数据进行存储99

100 */

101

102

103 public static void toHex2(intnum)104 {105 //定义一个十六进制的元素的表

106 char[] arr={'0','1','2','3',107 '4','5','6','7',108 '8','9','A','B',109 'C','D','E','F'};110

111 //定义一个char类型的数组,用于存储每次获取到的十六进制值

112 char[] chs=new char[8];113 int pos =chs.length;114 while(num!=0)115 {116 int temp =num & 15;117 chs[--pos]=arr[temp];118 num = num >>> 4;119 }120 System.out.println("pos="+pos);121 //打印数组内容

122 for (int x=pos;x

126 }127 }128 }129

130

131

132

133 3三种进制转换134

135 classArrayTest6136 {137 public static voidmain(String[] args)138 {139 toBin(6);140 toHex(26);141 toOctal(60);142

143 System.out.println(Integer.toBinaryString(-6));//开发写这个

144

145

146

147 }148 //十进制--->二进制

149 public static void toBin(intnum)150 {151 trans(num,1,1);152 }153

154 //十进制--->八进制

155

156 public static void toOctal(intnum)157 {158 trans(num,7,3);159 }160

161 //十进制--->十六进制

162

163 public static void toHex(intnum)164 {165 trans(num,15,4);166 }167

168 public static void trans(int num,int base,intoffset)169 {170 if (num=0)171 {172 System.out.println("0");173 }174 //定义一个十六进制的元素的表

175 char[] arr={'0','1','2','3',176 '4','5','6','7',177 '8','9','A','B',178 'C','D','E','F'};179

180 //定义一个char类型的数组,用于存储每次获取到的十六进制值

181 char[] chs=new char[32];182 int pos =chs.length;183 while(num!=0)184 {185 int temp =num &base;186 chs[--pos]=arr[temp];187 num = num >>>offset;188 }189 System.out.println("pos="+pos);190 //打印数组内容

191 for (int x=pos;x

195 }196 }197 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值