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
  • 相关阅读:
    处理器及其调度
    java面向对象
    操作系统概述
    mysql 基础操作
    java集合类详解
    java数组
    java方法
    Python—进程间通信
    Python—TCP的黏包问题以及UDP的分片问题
    Python—网络通信编程之tcp非阻塞通信(socketserver)
  • 原文地址:https://www.cnblogs.com/doitjust/p/14333332.html
Copyright © 2011-2022 走看看