黑马程序员--进制转换

来源:互联网 发布:精细建筑模型 知乎 编辑:程序博客网 时间:2024/06/07 16:44

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

十进制转十六进制

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n;
n=input.nextInt();
System.out.println(Integer.toHexString(n).toUpperCase());//转换成大写字母;toLowerCase():转换成小写的16进制;
  }
}

 

各种进制转换

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
       String c=sc.next();
       System.out.println(Integer.toHexString(c).toUpperCase());//十进制转换成十六进制
        System.out.println(Integer.toBinaryString(c).toUpperCase());//十进制转换成2进制
        System.out.println(Integer.toOctalString(c).toUpperCase());//十进制转换成八进制
       System.out.println(Integer.valueOf(c,16).toString());//十六进制转换成十进制
       String t=Integer.valueOf(c, 16).toString();
       int n=Integer.parseInt(t);//先将十六进制转换成字符串然后将字符串转换成整数
       System.out.println(Integer.toOctalString(n).toUpperCase());//整数转换成八进制
    }
}

java中byte与十六进制字符串的相互转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。

同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。

/**

Java代码
  1. * Convertbyte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。
  2. *@param srcbyte[] data
  3. *@return hex string
  4. */
  5. publicstatic String bytesToHexString(byte[] src){
  6. StringBuilder stringBuilder =new StringBuilder("");
  7. if (src ==null || src.length <=0) {
  8. returnnull;
  9. }
  10. for (int i =0; i < src.length; i++) {
  11. int v = src[i] &0xFF;
  12. String hv = Integer.toHexString(v);
  13. if (hv.length() <2) {
  14. stringBuilder.append(0);
  15. }
  16. stringBuilder.append(hv);
  17. }
  18. return stringBuilder.toString();
  19. }
  20. /**
  21. * Convert hex string to byte[]
  22. * @param hexString the hex string
  23. * @return byte[]
  24. */
  25. publicstaticbyte[] hexStringToBytes(String hexString) {
  26. if (hexString ==null || hexString.equals("")) {
  27. returnnull;
  28. }
  29. hexString = hexString.toUpperCase();
  30. int length = hexString.length() /2;
  31. char[] hexChars = hexString.toCharArray();
  32. byte[] d =newbyte[length];
  33. for (int i =0; i < length; i++) {
  34. int pos = i *2;
  35. d[i] = (byte) (charToByte(hexChars[pos]) <<4 | charToByte(hexChars[pos +1]));
  36. }
  37. return d;
  38. }
  39. /**
  40. * Convert char to byte
  41. * @param c char
  42. * @return byte
  43. */
  44. privatebyte charToByte(char c) {
  45. return (byte)"0123456789ABCDEF".indexOf(c);
  46. }
  1. //将指定byte数组以16进制的形式打印到控制台
  2. publicstaticvoid printHexString(byte[] b) {
  3. for (int i =0; i < b.length; i++) {
  4. String hex = Integer.toHexString(b[i] &0xFF);
  5. if (hex.length() ==1) {
  6. hex ='0' + hex;
  7. }
  8. System.out.print(hex.toUpperCase() );
  9. }
  10. }

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

0 0
原创粉丝点击