请用移位的方式打印出一个十进制整数的十六进制形式

zhanghuaigong 2010-06-21 03:18:51
麻烦各位帮忙做一下这个题:
用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式计算出一个十六进制数值对应的十六进制形式:
•(1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
•(2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
•(3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
...全文
241 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhanghuaigong 的回复:]
第一种方法呢?
[/Quote]

我自己写的!
zhanghuaigong 2010-06-27
  • 打赏
  • 举报
回复
第一种方法呢?
dracularking 2010-06-27
  • 打赏
  • 举报
回复
如果仅仅是16进制的话,f之后的字符就不需要了
heartraid86 2010-06-23
  • 打赏
  • 举报
回复
LS的代码出处是JDK中的Integer类,很精练。多看看JDK源码很有好处。
猿敲月下码 2010-06-23
  • 打赏
  • 举报
回复
不解释,有出处
public class Test {
final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z' };

private static String toHexString(int i) {
char[] buf = new char[32];
int charPos = 32;
int radix = 1 << 4;
int mask = radix - 1;
do {
buf[--charPos] = digits[i & mask];
i >>>= 4;
} while (i != 0);

return new String(buf, charPos, (32 - charPos));
}

public static void main(String[] args) {
int i = 55;
System.out.println(toHexString(i));
}
}
zhanghuaigong 2010-06-22
  • 打赏
  • 举报
回复
还有没有其他的答案啊?
zhanghuaigong 2010-06-22
  • 打赏
  • 举报
回复
没有别的了吗 帮帮忙啊
izard999 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
作业帖的话只贴代码,不负责解释和测试:


Java code
public class ByteUtil {

private final static char[] HEX = "0123456789abcdef".toCharArray();

private ByteUtil() { }

public static String bytes2S……
[/Quote]
功底深厚.! 学习了
  • 打赏
  • 举报
回复
作业帖的话只贴代码,不负责解释和测试:

public class ByteUtil {

private final static char[] HEX = "0123456789abcdef".toCharArray();

private ByteUtil() { }

public static String bytes2StrSpace(byte[] bys) {
char[] chs = new char[bys.length * 3 - 1];
for(int i = 0, k = 0; i < bys.length; i++) {
if(k > 0) {
chs[k++] = ' ';
}
chs[k++] = HEX[(bys[i] >> 4) & 0xf];
chs[k++] = HEX[bys[i] & 0xf];
}
return new String(chs);
}

public static String bytes2Str(byte[] bys) {
char[] chs = new char[bys.length * 2];
for(int i = 0, k = 0; i < bys.length; i++) {
chs[k++] = HEX[(bys[i] >> 4) & 0xf];
chs[k++] = HEX[bys[i] & 0xf];
}
return new String(chs);
}

public static String byte2Str(byte b) {
char[] chs = new char[2];
chs[0] = HEX[(b >> 4) & 0xf];
chs[1] = HEX[b & 0xf];
return new String(chs);
}
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧