zoukankan      html  css  js  c++  java
  • Java十六进制字符串转换说明

    字符串的转换

    变量在内存中的数据

     

    Java代码

     1 package com.example;
     2 
     3 import java.nio.charset.StandardCharsets;
     4 
     5 public class HelloWorld {
     6     public static void main(String[] args) {
     7 
     8         String var_str = "68656C6C6F776F726C64";
     9 
    10         //以字符串方式打印var_str中的内容
    11         System.out.println("1.以字符串方式打印var_str中的内容,var_str:");
    12         System.out.format("%s",var_str);
    13         System.out.println();System.out.println();
    14 
    15         //十六进制字符串转成十六进制字节数组, 两者在内存中的数据不同
    16         System.out.println("2.十六进制字符串转成十六进制字节数组, 两者在内存中的数据不同,res:");
    17         byte[] res = hexString2Bytes(var_str);
    18         for(int i=0;i<res.length;i++) {
    19             System.out.format("%02X ",res[i]);
    20         }
    21         System.out.println();System.out.println();
    22 
    23         //十六进制字符串使用十六进制字节数据编码,两者在内存中的数据相同
    24         System.out.println("3.十六进制字符串使用十六进制字节数据编码,两者在内存中的数据相同,res2=var_str.getBytes():");
    25         byte[] res2 = var_str.getBytes();
    26         for(int i=0;i<res2.length;i++) {
    27             System.out.format("%02X ",res2[i]);
    28         }
    29         System.out.println();System.out.println();
    30 
    31         //将字符串转换成16进制字符串,两者在内存中的数据不同
    32         System.out.println("4.字符串转换成16进制字符串,两者在内存中的数据不同,res3:");
    33         String res3 = strTo16(var_str);
    34         System.out.format("%s",res3);
    35         System.out.println();System.out.println();
    36 
    37     }
    38 
    39 
    40 
    41     /**
    42      * 十六进制字符串转十六进制字节数组
    43      * */
    44     private static byte charToByte(char c) {
    45         return (byte) "0123456789ABCDEF".indexOf(c);
    46     }
    47     public static byte[] hexString2Bytes(String hex) {
    48         if ((hex == null) || (hex.equals(""))){
    49             return null;
    50         }
    51         else if (hex.length()%2 != 0){
    52             return null;
    53         }
    54         else{
    55             hex = hex.toUpperCase();
    56             int len = hex.length()/2;
    57             byte[] b = new byte[len];
    58             char[] hc = hex.toCharArray();
    59             for (int i=0; i<len; i++){
    60                 int p=2*i;
    61                 b[i] = (byte) (charToByte(hc[p]) << 4 | charToByte(hc[p+1]));
    62             }
    63             return b;
    64         }
    65     }
    66 
    67     public static String strTo16(String s){
    68         String str="";
    69         for(int i=0;i<s.length();i++) {
    70             int ch = (int)s.charAt(i);
    71             String s4 = Integer.toHexString(ch);
    72             str = str + s4;
    73         }
    74         return str;
    75     }
    76 
    77 }
    HelloWorld.java
  • 相关阅读:
    自动化运维工具Ansible实战Playbooks剧本使用
    Mysql5.6.x版本半同步主从复制的开启方法
    mysql数据库的一些基本概念
    mysql之视图
    mysql之索引
    机器学习笔记09-----决策树与随机森林1---决策树概述
    机器学习笔记08-----回归2
    Anaconda 利用conda安装第3方包
    机器学习笔记07-----回归1
    使用navicat导出数据库字典
  • 原文地址:https://www.cnblogs.com/doitjust/p/14333332.html
Copyright © 2011-2022 走看看