`
keepwork
  • 浏览: 333643 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

16进制相关操作

阅读更多
开发者博客:http://www.developsearch.com

/**
 * 16进制相关操作
 * 
 * @author chenxin
 * @version [版本号, 2012-5-21]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class 16Util {

    private static final char[] HEX = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

	/**
     * 返回int的16进制表示
     * 
     * @param l 传进的长整数
     * @return 传进参数的16进制字符串表示
     */
    public static String getHexStr(long l)
    {
        StringBuffer sbRst = new StringBuffer(20);
        int idx = (int) ((l & 0xF000000000000000L) >> 60);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x0F00000000000000L) >> 56);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x00F0000000000000L) >> 52);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x000F000000000000L) >> 48);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x0000F00000000000L) >> 44);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x00000F0000000000L) >> 40);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x000000F000000000L) >> 36);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x0000000F00000000L) >> 32);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x00000000F0000000L) >> 28);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x000000000F000000L) >> 24);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x0000000000F00000L) >> 20);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x00000000000F0000L) >> 16);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x000000000000F000L) >> 12);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x0000000000000F00L) >> 8);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) ((l & 0x00000000000000F0L) >> 4);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (int) (l & 0x000000000000000FL);
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        return sbRst.toString();
    }

    /**
     * 返回int的16进制表示
     * 
     * @param i 传进的整数
     * @return 传进参数的16进制字符串表示
     */
    public static String getHexStr(int i)
    {
        StringBuffer sbRst = new StringBuffer(10);
        int idx = (i & 0xF0000000) >> 28;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (i & 0x0F000000) >> 24;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (i & 0x00F00000) >> 20;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (i & 0x000F0000) >> 16;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (i & 0x0000F000) >> 12;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (i & 0x00000F00) >> 8;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (i & 0x000000F0) >> 4;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = i & 0x0000000F;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        return sbRst.toString();
    }

    /**
     * 返回Short的16进制表示
     * 
     * @param s 传进的短整形
     * @return 传进参数的16进制字符串表示
     */
    public static String getHexStr(short s)
    {
        StringBuffer sbRst = new StringBuffer(6);
        int idx = (s & 0xF000) >> 12;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (s & 0x0F00) >> 8;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = (s & 0x00F0) >> 4;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = s & 0x000F;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        return sbRst.toString();
    }

    /**
     * 返回字节的16进制表示
     * 
     * @param pByte 传进的字节
     * @return 传进参数的16进制字符串表示
     */
    public static String getHexStr(byte pByte)
    {
        StringBuffer sbRst = new StringBuffer(4);
        int idx = (pByte & 0xF0) >> 4;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[idx]);
        idx = pByte & 0x0F;
        idx = idx < 0 ? idx + 16 : idx;
        sbRst.append(HEX[pByte & 0x0F]);
        return sbRst.toString();
    }


}
分享到:
评论

相关推荐

    16进制读取器.rar

    下面我们将深入探讨16进制读取器的相关知识点。 1. **16进制的基本概念**: - 16进制是基于16个符号(0-9和A-F)的计数系统,每个数字位可以表示16种状态。在计算机中,因为二进制和16进制之间的转换非常方便(4位...

    16进制查看器,方便查看16进制文件

    “HxDx64.exe”和“HxD.exe”很可能是这款16进制查看器的可执行文件,其中“HxDx64.exe”是适用于64位操作系统的版本,而“HxD.exe”可能是32位版本。这些文件可以下载并安装在用户的计算机上,以便直接打开和分析...

    16进制与ASCII互转

    16进制与ASCII之间的转换是编程中常见的操作。例如,在处理二进制文件或网络通信时,我们可能需要将ASCII字符转换为16进制表示,或者反过来,将16进制数据解析成可读的ASCII字符串。这是因为16进制提供了一种更简洁...

    16进制字符串显示图片

    在计算机科学中,16进制(Hexadecimal)是一种常用于表示二进制数据的便捷方式,因为它比纯二进制更容易阅读和理解。在标题“16进制字符串显示图片”中,所指的是一种将16进制字符串转换为图像的方法。这种技术通常...

    汉字转16进制的工具

    在IT领域,16进制(Hexadecimal)是一种常见的数值表示方式,特别是在计算机科学和编程中。...在实际的IT工作中,了解字符编码以及它们如何转换为16进制可以帮助解决与文本处理、数据解析等相关的问题。

    16进制转图片转16进制.rar

    在IT领域,16进制...总的来说,16进制与图片之间的转换是计算机科学中的基础操作,它涉及到二进制数据的表示、图像处理和编程技术。理解这一过程对于深入学习计算机科学和进行相关的项目开发具有重要意义。

    Qt 读取16进制的data文件

    本篇文章将详细探讨如何在Qt环境中读取16进制的data文件,并以新手易于理解的方式进行介绍。 首先,我们要明白在Qt中读取文件的基本步骤。无论文件是以文本还是16进制形式存储,文件I/O的核心组件是`QFile`类。这个...

    16进制文件修改工具

    本文将深入探讨16进制文件的原理,以及使用16进制编辑器修改文件的相关知识。 首先,16进制文件本质上是二进制文件的一种表现形式。在计算机内部,所有的数据都以0和1的形式存储,而16进制提供了一种更直观的方式来...

    C#从16进制转换成汉字

    在处理与字符编码相关的任务时,例如Unicode编码,可能会涉及到将16进制值转换为汉字。Unicode是一个包含世界上大部分字符的编码标准,每个字符都有一个唯一的16或32位的数字表示,通常以16进制的形式给出。 在C#中...

    10进制与16进制浮点数转换

    下面我们将详细讨论10进制与16进制浮点数之间的转换,并介绍相关的知识点。 1. **浮点数的概念**:浮点数是一种可以表示小数的数字,它由两部分组成——尾数(mantissa)和指数(exponent)。在计算机中,常见的...

    BCD.rar_16进制_16进制转BCD_bcd 16进制_visual c_压缩BCD

    在IT领域,16进制(Hexadecimal)是一种常见的数值表示方式,特别是在编程中,它被广泛用于表示二进制数据。16进制由0到9的阿拉伯数字和A到F的字母组成,每位可以表示16种可能的值,即0-15。在计算机科学中,16进制...

    exe文件转成16进制工具

    16进制是一种便于人类理解和操作的数字表示方式,尤其是在处理二进制数据时,因为每个16进制字符代表4位二进制数,比十进制更直观。 描述中的“方便编程人员用”表明这个工具是为了解决程序员在工作中遇到的问题而...

    vb.net浮点转16进制

    下面我们将详细探讨如何在VB.NET中实现浮点数到16进制的转换,并了解相关知识点。 首先,我们需要理解浮点数在计算机内部是如何存储的。根据IEEE 754标准,浮点数分为单精度(32位,`Single`类型)和双精度(64位,...

    16进制汉字互转(16进制和汉字转换工具C#安装版)

    至于压缩包中的“16进制汉字转化”文件,这可能是该工具的源代码、可执行文件或相关的文档说明。源代码可能会包含使用C#编写的函数或类,用于实现16进制和汉字之间的转换逻辑。如果是一个可执行文件,用户可以直接...

    易语言文本和16进制相互转换工具

    文本和16进制之间的转换是编程中常见的需求,特别是在处理二进制数据、文件解析或通信协议时。易语言提供的工具和方法使得这种转换变得简单易行。 在易语言中,进行文本和16进制转换主要涉及到以下几个知识点: 1....

    MP3音乐txt文件转16进制代码工具

    将文件转化为16进制代码,可以使人类和编程更容易读取和操作这些数据,尤其是在编写固件或加载数据到内存时。 然后是TXT文件。TXT是纯文本文件,包含可打印的ASCII字符。它们在许多场景下被用作配置文件、日志文件...

    VC串口16进制指令发送与接收

    16进制指令通常用于表示设备的特定操作代码或参数,因为它们能更直观地对应到二进制格式,便于理解和编程。在VC中,我们可以使用Windows API函数或者第三方库来实现串口的打开、配置和通信。Windows API中的`...

    易语言16进制转10进制

    在编程领域,16进制(Hexadecimal)和10进制(Decimal)转换是常见的数值转换操作。易语言作为一款中国本土开发的、面向初学者的编程语言,提供了便捷的方式来实现这种转换。本文将详细讲解如何在易语言中进行16进制...

    16进制查看器(16进制、ASCII编码)

    总的来说,16进制查看器和相关的WinHex软件是IT专业人员用来深入理解和操作二进制数据的重要工具。它们可以帮助用户查看文件的底层结构,查找和修复数据问题,以及进行各种数据分析任务。无论是对软件开发者寻找内存...

    C#16进制转换10进制

    本文主要讲解如何在C#中实现16进制转换为10进制,以及相关的位运算知识。 首先,让我们来看看C#如何进行16进制到10进制的转换。C#提供了`Convert.ToInt32`方法,它接受一个字符串形式的数值和一个表示原数值基数的...

Global site tag (gtag.js) - Google Analytics