HexDump.java解析android 16进制转换

package com.android.internal.util;

public class HexDump
{
private final static char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };//十六进制的组成元素 public static String dumpHexString(byte[] array)
{
return dumpHexString(array, 0, array.length);
} public static String dumpHexString(byte[] array, int offset, int length)
{
StringBuilder result = new StringBuilder(); byte[] line = new byte[16];
int lineIndex = 0; result.append("\n0x");
result.append(toHexString(offset)); for (int i = offset ; i < offset + length ; i++)
{
if (lineIndex == 16)
{
result.append(" "); for (int j = 0 ; j < 16 ; j++)
{
if (line[j] > ' ' && line[j] < '~')
{
result.append(new String(line, j, 1));
}
else
{
result.append(".");
}
} result.append("\n0x");
result.append(toHexString(i));
lineIndex = 0;
} byte b = array[i];
result.append(" ");
result.append(HEX_DIGITS[(b >>> 4) & 0x0F]);
result.append(HEX_DIGITS[b & 0x0F]); line[lineIndex++] = b;
} if (lineIndex != 16)
{
int count = (16 - lineIndex) * 3;
count++;
for (int i = 0 ; i < count ; i++)
{
result.append(" ");
} for (int i = 0 ; i < lineIndex ; i++)
{
if (line[i] > ' ' && line[i] < '~')
{
result.append(new String(line, i, 1));
}
else
{
result.append(".");
}
}
} return result.toString();
} public static String toHexString(byte b)
{
return toHexString(toByteArray(b));
} public static String toHexString(byte[] array)
{
return toHexString(array, 0, array.length);
} public static String toHexString(byte[] array, int offset, int length)
{
char[] buf = new char[length * 2]; int bufIndex = 0;
for (int i = offset ; i < offset + length; i++)
{
byte b = array[i];
buf[bufIndex++] = HEX_DIGITS[(b >>> 4) & 0x0F];
buf[bufIndex++] = HEX_DIGITS[b & 0x0F];
} return new String(buf);
} public static String toHexString(int i)
{
return toHexString(toByteArray(i));
} public static byte[] toByteArray(byte b)
{
byte[] array = new byte[1];
array[0] = b;
return array;
} public static byte[] toByteArray(int i)
{
byte[] array = new byte[4]; array[3] = (byte)(i & 0xFF);
array[2] = (byte)((i >> 8) & 0xFF);
array[1] = (byte)((i >> 16) & 0xFF);
array[0] = (byte)((i >> 24) & 0xFF); return array;
} private static int toByte(char c)
{
if (c >= '0' && c <= '9') return (c - '0');
if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
if (c >= 'a' && c <= 'f') return (c - 'a' + 10); throw new RuntimeException ("Invalid hex char '" + c + "'");
} public static byte[] hexStringToByteArray(String hexString)
{
int length = hexString.length();
byte[] buffer = new byte[length / 2]; for (int i = 0 ; i < length ; i += 2)
{
buffer[i / 2] = (byte)((toByte(hexString.charAt(i)) << 4) | toByte(hexString.charAt(i+1)));
} return buffer;
}
}

HexDump.java解析,android 16进制转换的更多相关文章

  1. java中16进制转换10进制

    java中16进制转换10进制 public static void main(String[] args) { String str = "04e1"; String myStr ...

  2. jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)

    原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jd ...

  3. Java字符串转16 进制工具类Hex.java

    Java字符串转16 进制工具类Hex.java 学习了:https://blog.csdn.net/jia635/article/details/56678086 package com.strin ...

  4. C# 中关于汉字与16进制转换的代码

    /// <summary> /// 从汉字转换到16进制 /// </summary> /// <param name="s"></par ...

  5. 颜色转换、随机、16进制转换、HSV

    颜色转换.随机.16进制转换.HSV: /** * * *-----------------------------------------* * | *** 颜色转换.随机.16进制转换.HSV * ...

  6. java byte 16进制转换

    整型转16进制: int devIdInt = Integer.parseInt(devId);String devIdString = Integer.toHexString(devIdInt); ...

  7. java中Integer包装类的具体解说(java二进制操作,全部进制转换)

    程序猿都非常懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往须要操作Integer,或者各种进制的转换等等.我今天就为大家具体解说一下Integer的使用吧.看代码: ...

  8. SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0

    最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制 刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题 所以就上网搜了一下,然后改了改,下面 ...

  9. [原创]K8飞刀20160613 Plesk密码 & 注册表16进制转换 & Html实体解密

    K8飞刀  by K8拉登哥哥@[K8搞基大队]博客: http://qqhack8.blog.163.com 简介: K8飞刀是一款多功能的安全测试工具. Hacker Swiss Army Kni ...

随机推荐

  1. Twig---基本使用

    三种特殊语法: {{ … }}   “说些什么”:输出一个变量值或者一个表达式的结果到模板.如:{{ item.username }}. twig也包含filters,它可以在模板渲染之前改变输出内容 ...

  2. Docker容器挂载宿主目录的情形分析

    Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...

  3. VS2015 中使用 MVC4

    最近把机子升级到win10 觉得还是好用, 又看了一个vs最新版,于时就安了个vs2015 可以前MVC4的项目用不起了 System.Web.Mvc这个有叹号,生成还要报错, 看了一下原因找不到4. ...

  4. PAT甲1077 Kuchiguse【字符串】【暴力】【Hash】【二分】

    1077 Kuchiguse (20 分) The Japanese language is notorious for its sentence ending particles. Personal ...

  5. R升级和包更新

    1.R升级 # 安装包"installr" install.packages("installr") # 导入包 library(installr) # 升级 ...

  6. 【紫书】Undraw the Trees UVA - 10562 递归,字符串

    题意:给你画了一颗树,你要把它的前序输出. 题解:读进到二维数组.边解析边输出. 坑:少打了个-1. #define _CRT_SECURE_NO_WARNINGS #include<cstri ...

  7. linux环境下python的部署

    linux系统环境自带python2.6,但有时我们项目使用的版本可能是3.x以上等等,此时我们需要在linux中再安装项目所需的python版本,此时就涉及多版本共存问题了,很多同学在安装多个版本P ...

  8. Kubernetes网络的4种解决方案

    一.Kubernetes + Flannel Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中,这在GCE(Google Compute Engine)里面是现成的 ...

  9. innodb next-key lock引发的死锁

    innodb的事务隔离级别是可重复读级别且innodb_locks_unsafe_for_binlog禁用,也就是说允许next-key lock CREATE TABLE `LockTest` (  ...

  10. Service 的 onStartCommand(Intent, int, int) 返回值

    (1)START_NOT_STICKY If the system kills the service after onStartCommand() returns, do not recreate ...