精华内容
下载资源
问答
  • 十六进制编辑There are different types of editors used to change the context of the given file. Most of the computer users aware of text editors. But there are other less-known editors used by ...
    十六进制编辑器

    十六进制编辑器

    There are different types of editors used to change the context of the given file. Most of the computer users aware of text editors. But there are other less-known editors used by different professions. Hex editors are mainly used by reverse engineers, system administrators, application developers, etc.

    有多种类型的编辑器用于更改给定文件的上下文。 大多数计算机用户都知道文本编辑器。 但是,还有其他不太知名的不同行业的编辑器。 十六进制编辑器主要由反向工程师,系统管理员,应用程序开发人员等使用。

    什么是十六进制或十六进制编辑器? (What is Hex or Hexadecimal Editor?)

    Hex editors used to edit files where these files are generally structured in a hexadecimal format. The logic is the same as text files where they are structured in ASCII/text format. Hexadecimal numbering system like decimal where we use in our daily life.

    十六进制编辑器用于编辑文件,这些文件通常以十六进制格式组织。 其逻辑与以ASCII /文本格式组织的文本文件相同。 我们在日常生活中使用的十六进制编号系统(例如十进制)。

    免费十六进制编辑器(法语) (Free Hex Editor (frehed))

    Free Hex Editor is provided by HHD software. It is especially good in editing large files in hexadecimal mode. It is distributed in the freemium model and provides basic features for free. It allows you to find data patterns in multi-gigabyte files in seconds. Supports expression rich regular expressions. Easily create file patches just one click. The flexible user interface can easily be configured for your convenience. Supports multiple cores to make it exceedingly faster. Can be downloaded from the following link.

    HHD软件提供了免费的Hex编辑器。 在以十六进制模式编辑大型文件时特别有用。 它以免费增值模式分发,并免费提供基本功能。 它使您可以在几秒钟内找到多GB文件中的数据模式。 支持丰富的表达式正则表达式。 一键轻松创建文件补丁。 为方便起见,可以轻松配置灵活的用户界面。 支持多个内核,以使其速度更快。 可以从以下链接下载。

    http://www.hhdsoftware.com/Download/free-hex-editor-neo.exe

    http://www.hhdsoftware.com/Download/free-hex-editor-neo.exe

    Free Hex Editor (frehed)
    Free Hex Editor (frehed)
    免费十六进制编辑器(法语)

    高度 (HxD)

    HxD is developed by Mh-Nexus. HxD is a popular hex editor between reverse engineers. It has a rich feature set. It provides install-able and portable editions. It has the ability to edit RAM or main memory contents but as you expect it requires Administrator privileges. It can editor disk drives like hard disks, floppy disks, zip-disks, cd, etc. HxD has a flexible and fast search engine. Edited content can be exported in several data formats like Pascal, C, Java, C# source, Plain text, Hex files, etc.  HxD can provide basic data analytics or statistics about the hex file. HxD can be downloaded from the following link.

    HxD由Mh-Nexus开发。 HxD是反向工程师之间流行的十六进制编辑器。 它具有丰富的功能集。 它提供了可安装和便携式版本。 它具有编辑RAM或主存储器内容的功能,但是正如您期望的那样,它需要管理员权限。 它可以编辑硬盘,软盘,zip磁盘,cd等磁盘驱动器。HxD具有灵活而快速的搜索引擎。 可以以多种数据格式(例如Pascal,C,Java,C#源,纯文本,十六进制文件等)导出已编辑的内容。HxD可以提供有关十六进制文件的基本数据分析或统计信息。 可以从以下链接下载HxD。

    LEARN MORE  Linux od Command Tutorial With Examples To Dump Files Octal Number Format
    了解更多Linux od命令教程,并附带示例以转储文件八进制数字格式

    ftp://wa651f5:[email protected]/HxDSetupEN.zip

    ftp:// wa651f5: [受电子邮件保护] /HxDSetupEN.zip

    HxD
    HxD
    高度

    超编辑(UltraEdit)

    UltraEdit has a rich feature set like previous examples. It has also a shiny and modern look. UltraEdit support themes that will give different look to the hex editor. It supports multi-caret or multi-select where we can add the same characters into multiple places single type. Like other hex editors fast search. It supports integrated FTP, Ssh, Telnet connections, and remote files. It supports Windows, Mac, and Linux operating systems.  UltraEdit can be downloaded from the following link.

    UltraEdit具有与前面的示例类似的丰富功能。 它也具有闪亮和现代的外观。 UltraEdit支持主题将赋予十六进制编辑器不同的外观。 它支持多插入符号或多选,我们可以将相同的字符添加到单个类型的多个位置。 像其他十六进制编辑器一样,可以快速搜索。 它支持集成的FTP,Ssh,Telnet连接和远程文件。 它支持Windows,Mac和Linux操作系统。 可以从以下链接下载UltraEdit。

    https://downloads.ultraedit.com/main/ue/win/ue_english_64.exe

    https://downloads.ultraedit.com/main/ue/win/ue_english_64.exe

    UltraEdit
    UltraEdit
    超编辑

    ZTreeWin(ZTreeWin)

    ZTreeWin is a command-line or MS-DOS-based hex editor. It has fewer features than other hex editor but has the ability to work from the command line or MS-DOS. It supports Unicode applications. Enhanced color configuration. Extended status information about system and login. The history list for marked entries which has no limit.

    ZTreeWin是命令行或基于MS-DOS的十六进制编辑器。 它的功能少于其他十六进制编辑器,但具有从命令行或MS-DOS运行的能力。 它支持Unicode应用程序。 增强的色彩配置。 有关系统和登录的扩展状态信息。 标记条目的历史记录列表没有限制。

    ZTreeWin
    ZTreeWin
    ZTreeWin

    PSPad (PSPad)

    PSPad is a freeware text and code editor. It can edit multiple files at the same time. Ability to save current work in order to open later. Ftp client to edit remote files directly. Macro recorder which can record, save, and run macros. diff functionality with coloring. Syntax highlighting according to file type. RTF, HTML, TeX export capability. It has an installer and portable versions. PSPad can be downloaded from the following link.

    PSPad是一个免费软件,文本和代码编辑器。 它可以同时编辑多个文件。 保存当前工作以便以后打开的能力。 ftp客户端直接编辑远程文件。 宏记录器,可以记录,保存和运行宏。 差异功能与着色。 根据文件类型突出显示语法。 RTF,HTML,TeX导出功能。 它具有安装程序和便携式版本。 可以从以下链接下载PSPad。

    http://www.fosshub.com/PSPad.html

    http://www.fosshub.com/PSPad.html

    PSPad
    PSPad
    PSPad

    Notepad ++ Hexeditor插件 (Notepad++ Hexeditor Plugin)

    Notepad++ is actually a text editor but it has plugin that provides additional features. Hex editor plugin is one of them. Hex editor can be installed from Plugin -> Plugin Manager -> Show Plugin Manager-> Available .Notepadd++ provides simple features as Hex editor. We can view change the content of the current file.

    Notepad ++实际上是一个文本编辑器,但是它具有提供附加功能的插件。 十六进制编辑器插件就是其中之一。 十六进制编辑器可以从Plugin -> Plugin Manager -> Show Plugin Manager -> Available 。Notepadd++提供了一些简单的功能,如十六进制编辑器。 我们可以查看更改当前文件的内容。

    Notepad++ Hexeditor Plugin
    Notepad++ Hexeditor Plugin
    Notepad ++ Hexeditor插件

    HexEd.it(基于Web)(HexEd.it (Web Based))

    With the advancement of the web and internet most of the services, applications are provided web-based. HexEd.it is a web-based hex editor which provides very clean and simple GUI via the web browser. As you expect there is no need to install software to exit hex files. Just navigate to the https://hexed.it URL. As a web-based hex editor, it provides useful features about the display, date format, hex area settings, data type visibility, Address and text search, etc. As you expect in order to display and edit a file as hex you need to upload it with the Open file button. There is no fee about usage but you make a donation to this app or project via bitcoin or PayPal.

    随着Web和Internet的发展,大多数服务都基于Web提供了应用程序。 HexEd.it是一个基于Web的十六进制编辑器,可通过Web浏览器提供非常干净和简单的GUI。 如您所愿,无需安装软件即可退出十六进制文件。 只需导航到https://hexed.it URL。 作为基于Web的十六进制编辑器,它提供了有关显示,日期格式,十六进制区域设置,数据类型可见性,地址和文本搜索等的有用功能。如您所期望的,以十六进制显示和编辑文件时,您需要使用“打开文件”按钮上传。 使用不收取任何费用,但您可以通过比特币或PayPal向此应用或项目捐款。

    HexEd.it (Web Based)
    HexEd.it(基于Web)

    翻译自: https://www.poftut.com/best-free-hex-editors-windows/

    十六进制编辑器

    展开全文
  • 我们使用的大多数编程语言都处于较高水平,因为在机器能够真正识别它们之前,它们被翻译了好几次。你的CPU实际上是执行非常简单的指令,用0和1编码,比如add,logical或者从存储器地址加载一个数字到寄存器(所以我们...

    我们使用的大多数编程语言都处于较高水平,因为在机器能够真正识别它们之前,它们被翻译了好几次。你的CPU实际上是执行非常简单的指令,用0和1编码,比如add,logical或者从存储器地址加载一个数字到寄存器(所以我们可以添加或操作数值)等。

    那么这个翻译如何工作?那么假设你已经用C编写了一个简单的hello世界程序。它需要被翻译成机器代码,称为编译过程。在此阶段,您的代码将根据您的特定CPU(程序集)转换为中间语言。这应该是人类可读的机器指令(前面提到的添加,加载等)。然后机器指令被进一步转换为0和1。

    例如,在MIPS CPU架构添加的样子:

    0000 0000 0010 0010 0001 1000 0010 0000

    这基本上说,添加存储在寄存器1和2的值,并把结果在寄存器3

    事情很长,所以我们通常不是以二进制编写,而是以十六进制编写。四0和1的压缩成一个数字,我们得到:

    00 22 19 20

    所以,当你在一个十六进制编辑器打开一个可执行文件,所有这些值包括例如像上面的说明,静态数据,图书馆和。当你编辑这些值时,假设你知道你在做什么,你可以改变软件的行为。

    但是,你不想用二进制编写程序。这是非常痛苦的。我建议看看汇编以及CPU的工作方式,如果你更感兴趣。

    一些优点你可能会在机器内的代码比编写C:

    你得到你可以做什么更多的灵活性。您可以在整个程序的基础上管理您的资源,以便优化一切。飞机上的一些时间敏感仪器是用汇编编写的。

    您可以全面了解程序的每个部分是如何工作的。

    而缺点:

    这是非常难以保持这么多的事情记一次。这是非常容易出错的,而且很难调试。

    这是非常耗时的。由于您需要查看操作代码翻译,因此在汇编中您的写作生产率约为十分之一,机器代码更差。

    它不是平台独立的。机器代码是每个CPU架构,所以你的Windows代码(x86架构)不能在Mac上工作,而C程序可以重新编译并立即运行。

    展开全文
  • 十六进制190的2进制数Hexadecimal numbers, often shortened to “hex numbers” or “hex”, are numbers represented in base 16 as opposed to base 10 that we use for everyday arithmetic and counting. 十六...

    十六进制190的2进制数

    Hexadecimal numbers, often shortened to “hex numbers” or “hex”, are numbers represented in base 16 as opposed to base 10 that we use for everyday arithmetic and counting.

    十六进制数字(通常缩写为“十六进制数字”或“十六进制”)是以16为底的数字,而不是我们用于日常算术和计数的以10为底的数字。

    In practical terms, this means that each column of a number written in hexadecimal can represent up to 16 values.

    实际上,这意味着用十六进制写的数字的每一列最多可以表示16个值。

    Digits in hexadecimal use the standard symbols 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9 to represent the corresponding value, and use the first six letters of the alphabet to represent the values 10 through 15 (E.G: A, B, C, D, E, F).

    十六进制数字使用标准符号0、1、2、3、4、5、6、7、8和9表示相应的值,并使用字母的前六个字母表示值10到15( EG:A,B,C,D,E,F)。

    In programming, we prefix hexadecimal constants with 0x, with some exceptions.

    在编程中,我们将十六进制常量加0x前缀,但有一些例外。

    实例与解释 (Examples and explanation)

    0x1        ==        1
    0xF        ==        15
    0xFF       ==        255
    0xFFF      ==        4095
    0x1000     ==        4096

    In the standard base 10 system, each column represents increasing powers of 10, while in base 16 each column represents increasing powers of 16.

    在标准base 10系统中,每列代表幂的增加10,而在base 16中,每列代表幂的增加16。

    As seen in the table example above, with one hex digit we can represent numbers up to and including 15. Add another column and we can represent numbers up to 255, 4095 with another column, and so on.

    从上面的表格示例中可以看出,用一个十六进制数字可以代表不超过15的数字(包括15)。添加另一列,可以代表不超过255的数字,用另一列代表4095,以此类推。

    十六进制在底层编程中的使用 (Uses of Hexadecimal in Low Level Programming)

    Hexadecimal first found its use in Computer Science as a convenience feature.

    十六进制最初在计算机科学中被发现是一种便利功能。

    Data in our computers has a lowest common storage unit, the Byte. Each byte contains 8 bits, and is able to store a number between 0 and 255 inclusive.

    我们计算机中的数据具有最低的公用存储单元Byte。 每个字节包含8位,并且能够存储0到255之间的数字。

    Hexadecimal has the advantage of being terse and having well defined boundaries.

    十六进制的优点是简洁明了且边界清晰。

    A single byte is always represented by two hexadecimal digits from 0x00 to 0xFF, the latter being the largest per-byte value of 255.

    单个字节始终由两个0x00到0xFF的十六进制数字表示,后者是每字节最大的255。

    The terseness and byte-aligned nature of hexadecimal numbers make them a popular choice for software engineers working on low-level code-bases or embedded software.

    十六进制数字的简洁性和字节对齐性质使它们成为从事底层代码库或嵌入式软件的软件工程师的普遍选择。

    JavaScript中十六进制数的使用 (Uses of Hexadecimal Numbers in JavaScript)

    JavaScript supports the use of hexadecimal notation in place of any integer, but not decimals.

    JavaScript支持使用十六进制表示法代替任何整数,但不支持十进制。

    As an example, the number 2514 in hex is 0x9D2, but there is no language-supported way of representing 25.14 as a hex number.

    例如,十六进制数2514为0x9D2,但是没有语言支持的方式将25.14表示为十六进制数。

    Using hexadecimal in your code is a personal and stylistic choice, and has no effect on the underlying logic your code implements.

    在您的代码中使用十六进制是个人的风格选择,并且对您代码所实现的基础逻辑没有影响。

    CSS中十六进制数的使用 (Uses of Hexadecimal Numbers in CSS)

    CSS has for a long time used hexadecimal notation to represent color values. Consider the following selector:

    CSS长期以来一直使用十六进制表示法来表示颜色值。 考虑以下选择器:

    .my-container {
        background-color: #112233;
        color: #FFFFFF;
    }

    The background-color’s value is in fact three hex bytes.

    实际上, background-color的值为三个十六进制字节。

    The CSS processor treats these as three individual bytes, representing Red, Green, and Blue.

    CSS处理器将它们视为三个独立的字节,分别表示红色,绿色和蓝色。

    In our example, 11 corresponds to the Red color component, 22 corresponds to the Green color component, and 33 to the Blue color component.

    在我们的示例中,11对应于红色分量,22对应于绿色分量,33对应于蓝色分量。

    There is currently no way as of CSS3 to define a color with an alpha component using hex. The proposed CSS4 Draft1 includes a proposal to allow for an extra byte to specify alpha values.

    从CSS3开始,目前尚无使用十六进制的Alpha分量定义颜色的方法。 拟议CSS4草案1包含一项建议,允许增加一个字节来指定alpha值。

    For now, use of the standard rgba() function is the recommended way to add an alpha value to your colors.

    目前,建议使用标准rgba()函数为颜色添加Alpha值。

    翻译自: https://www.freecodecamp.org/news/hexadecimal-number-system/

    十六进制190的2进制数

    展开全文
  • 十六进制解码 In 在 Easy String Encryption Using CryptoAPI in C++ I described how to encrypt text and recommended that the encrypted text be stored as a series of hexadecimal digits -- b...

    十六进制解码

    In

    Easy String Encryption Using CryptoAPI in C++ I described how to encrypt text and recommended that the encrypted text be stored as a series of hexadecimal digits -- because cyphertext may contain embedded NULLs or other characters that can cause processing problems. 在C ++中使用CryptoAPI进行简单的字符串加密我描述了如何加密文本,并建议将加密的文本存储为一系列十六进制数字-因为密文可能包含嵌入的NULL或其他可能导致处理问题的字符。

    Since then I've worked on an application in which large blocks of binary data must be encoded into hexadecimal rapidly, and when needed, decoded back to binary just as rapidly.  In the earlier article, I provided a sort of "throw-away" hex encoder/decoder, but I felt that I needed something that was more efficient for production work.

    从那时起,我就致力于一个应用程序,在该应用程序中,必须将大型二进制数据块快速编码为十六进制,并在需要时将其解码为二进制。 在较早的文章中,我提供了一种“扔掉”的十六进制编码器/解码器,但我觉得我需要对生产工作更加有效的东西。

    In this article, I'll explore some hex encode/decode options, including the one supported by the CryptoAPI, and at the end of the article, I'll present the ultra-fast functions that ended up in my production code.

    在本文中,我将探讨一些十六进制编码/解码选项,包括。在本文的结尾,我将介绍最终在生产代码中使用的超快速功能。

    Observe the ordering of characters in an ASCII Table The only real issue with hex encoding is that there is a gap between the 9 and the A.  Most of the complications come when dealing with that.

    观察ASCII表中字符的顺序十六进制编码的唯一真正问题是9A之间存在间隙。 大多数并发症是在处理这些问题时出现的。

    How to Encode to Hexadecimal

    如何编码为十六进制

    Your binary source byte is 8 bits.  Take the data 4 bits at a time (values 0-15).  If that value is 0-9, then just add '0' (0x30).  If the value is 10-15, then add 0x37 instead.  That gives you a hex digit ('0', '1',...,'9','A',..., 'F').  Output the resulting high hex digit followed by the low hex digit.

    您的二进制源字节为8位。 一次取4位数据(值0-15)。 如果该值为0-9,则只需添加“ 0”(0x30)。 如果值为10-15,则添加0x37。 这会给您一个十六进制数字(“ 0”,“ 1”,...,“ 9”,“ A”,...,“ F”)。 输出结果高位十六进制数字,然后输出低位十六进制数字。

    void ToHexManual( BYTE* pSrc, int nSrcLen, CString& sDest )
    {
    	sDest="";
    	for ( int j=0; j<nSrcLen; j++ ) {
    		BYTE b1= *pSrc >> 4;   // hi nybble
    		BYTE b2= *pSrc & 0x0f; // lo nybble
    		b1+='0'; if (b1>'9') b1 += 7;  // gap between '9' and 'A'
    		b2+='0'; if (b2>'9') b2 += 7;  
    		sDest += b1; 
    		sDest += b2; 
    		pSrc++;
    	}
    }
    
    void ToHexSlow( BYTE* pSrc, int nSrcLen, CString& sDest )
    {
    	sDest="";
    	for ( int j=0; j<nSrcLen; j++ ) {
    		sDest.AppendFormat( "%02x", int(*pSrc) );
    		pSrc++;
    	}
    }
    
    significant problem when the output is large.  Let me explain...

    Significant Problem with Long Strings

    长字符串的重大问题

    Each time you concatenate to an existing CString (or an STL string object), the code must check to see if that current allocation is large enough.  If not, it must allocate a new chunk that is larger, and copy the existing contents to that location before appending the new text.  Imagine how clumsy that gets when the string is about 1MB long!

    每次连接到现有CString(或STL字符串对象)时,代码都必须检查以查看当前分配是否足够大。 如果不是,它必须分配一个更大的新块,并在追加新文本之前将现有内容复制到该位置。 想象一下,当字符串长约1MB时,会变得多么笨拙!

    We'll look at the efficient version that avoids these problems in a minute.  

    我们将看一眼能避免这些问题的高效版本。

    How to Decode from Hexadecimal

    如何从十六进制解码

    Your textual source data is composed of pairs of hex digits, for instance "72" or "0F' or "D3".  Take  the first digit and subtract '0' (0x30).  If the result is greater than 9 (it's 'A','B',...,'F'), then subtract 7, resulting in a value between 0 and 15.  Do the same for the second digit.  Multiply the first by 16 and add it to the second.  Output the resulting 8-bit value.

    您的文本源数据由成对的十六进制数字组成,例如“ 72”或“ 0F”或“ D3”。取第一个数字并减去“ 0”(0x30)。如果结果大于9(则为“ A” ','B',...,'F'),然后减去7,得到一个介于0和15之间的值。对第二个数字进行相同的操作。将第一个数字乘以16,然后将其加到第二个数字。结果为8位值。

    void FromHexManual( LPCSTR pSrc, int nSrcLen, BYTE* pDest )
    {
    	for ( int j=0; j<nSrcLen; j+=2 ) {
    		BYTE b1= pSrc[j]   -'0'; if (b1>9) b1 -= 7;
    		BYTE b2= pSrc[j+1] -'0'; if (b2>9) b2 -= 7;
    		*pDest++ = (b1<<4) + b2;  // <<4 multiplies by 16
    	}
    }
    
    void FromHexSlow( LPCSTR pSrc, int nSrcLen, BYTE* pDest )
    {
    	char sTmp[3]="xx";
    	int n;
    	for ( int j=0; j<nSrcLen; j += 2 ) {
    		sTmp[0]= pSrc[0];
    		sTmp[1]= pSrc[1];
    		sscanf( sTmp, "%x", &n );
    		pSrc += 2;
    		*pDest++ = (BYTE)n;
    	}
    }
    

    The CryptoAPI Hex Conversion Functions

    CryptoAPI十六进制转换功能

    None of the above routines provided the kind of speed that I was hoping to achieve.   After some research, I found a couple of functions in the CryptoAPI toolkit that convert to and from hex:

    上述例程都没有提供我希望达到的速度。 经过一番研究,我在CryptoAPI工具箱中发现了一些可与十六进制转换的函数:

       CryptBinaryToString  and  CryptStringToBinary

    CryptBinaryToStringCryptStringToBinary

    and I tried them:

    我尝试了它们:

    #pragma comment( lib, "Crypt32.lib" )
    #include <Wincrypt.h>
    void ToHexCryptoAPI( BYTE* pSrc, int nSrcLen, CString& sDest )
    {
        DWORD nOutLen= (nSrcLen*3)+4; // xx<space> + etc/
        char* pBuf= new char[nOutLen];
        BOOL fRet= CryptBinaryToString( pSrc,nSrcLen, CRYPT_STRING_HEX, pBuf, &nOutLen ); 
        sDest= pBuf;
        delete pBuf;
    }
    int FromHexCryptoAPI( LPCSTR pSrc, int nSrcLen, BYTE* pDest )
    {
        DWORD nOutLen= nSrcLen/2;
        BOOL fRet= CryptStringToBinary( pSrc, nSrcLen, CRYPT_STRING_HEX, pDest, &nOutLen, 0, 0);
        return( (int)nOutLen );
    }
    

    CryptBinaryToString appears to be formatted for screen output -- spaces between each pair of hex digits, embedded tab characters, CRLF at the end, etc.  The two functions above do work, and there certainly is value in using standard API functions, but the performance was lackluster, and I didn't want the overhead of the extra embedded characters.

    CryptBinaryToString似乎是为屏幕输出设置的格式-每对十六进制数字之间的空格,嵌入的制表符,末尾的CRLF等。上面的两个函数

    [step="" title="Finally --  The Ultra-Fast Code I Promised!"][/step]Lookup Tables Rather Than Calculations

    [step =“” title =“最后-我承诺的超快速代码!”] [/ step] 查找表而不是计算表

    If you look at the assembly-language output from any of the above routines, you will see conditional jumps and a significant number of calculations.   Modern processors are fast, using multiple pipelines to handle conditionals, but there is nothing faster than using a lookup table -- especially when the table is in L1 processor cache... the table access is nearly as fast as register access!

    如果您查看以上任何例程的汇编语言输出,您将看到条件跳转和大量计算。 现代处理器速度很快,使用多个管道来处理条件,但是比使用查找表更快的速度了-尤其是当该表位于L1处理器高速缓存中时...表访问几乎与寄存器访问一样快!

    So...

    所以...

    For binary-to-hex, I used a table that contains all possible output values for any byte of data.  This is very straightforward -- the data itself is the index into the table.  I use a WORD pointer to grab 16 bits (two hex digits) at a time.

    对于二进制到十六进制 ,我使用了一个表,其中包含任何数据字节的所有可能的输出值。 这非常简单-数据本身就是表的索引。 我使用WORD指针一次抓取16位(两个十六进制数字)。

    For hex-to-binary, I realized that I could use a lookup table that contains all possible hexadecimal digit values.   Rather than compensate for the "gap" between '9'' and 'A', I just left empty spots in the table.   As a bonus, I left an extra gap between "F" and "a" -- so that the same routine could convert the hexadecimal data regardless of whether it contains A,B,C,D,E,F or a,b,c,d,e,f.

    对于十六进制到二进制 ,我意识到我可以使用包含所有可能的十六进制数字值的查找表。 我没有补偿“ 9”和“ A”之间的“差距”,而是在表中留了空白点。 另外,我在“ F”和“ a”之间留了一个额外的空格-以便同一例程可以转换十六进制数据,而不管它是否包含A,B,C,D,E,F或a,b, c,d,e,f

    BYTE HexLookup[513]= {
    	"000102030405060708090a0b0c0d0e0f"
    	"101112131415161718191a1b1c1d1e1f"
    	"202122232425262728292a2b2c2d2e2f"
    	"303132333435363738393a3b3c3d3e3f"
    	"404142434445464748494a4b4c4d4e4f"
    	"505152535455565758595a5b5c5d5e5f"
    	"606162636465666768696a6b6c6d6e6f"
    	"707172737475767778797a7b7c7d7e7f"
    	"808182838485868788898a8b8c8d8e8f"
    	"909192939495969798999a9b9c9d9e9f"
    	"a0a1a2a3a4a5a6a7a8a9aaabacadaeaf"
    	"b0b1b2b3b4b5b6b7b8b9babbbcbdbebf"
    	"c0c1c2c3c4c5c6c7c8c9cacbcccdcecf"
    	"d0d1d2d3d4d5d6d7d8d9dadbdcdddedf"
    	"e0e1e2e3e4e5e6e7e8e9eaebecedeeef"
    	"f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"
    };
    void ToHex( BYTE* pSrc, int nSrcLen, CString& sDest )
    {
    	WORD* pwHex=  (WORD*)HexLookup;
    	WORD* pwDest= (WORD*)sDest.GetBuffer((nSrcLen*2)+1);
    
    	for (int j=0; j<nSrcLen; j++ ) {
    		*pwDest= pwHex[*pSrc];
    		pwDest++; pSrc++;
    	}
    	*((BYTE*)pwDest)= 0;  // terminate the string
    	sDest.ReleaseBuffer((nSrcLen*2)+1);
    }
    
    BYTE DecLookup[] = {
    	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // gap before first hex digit
    	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 
    	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 
    	0,1,2,3,4,5,6,7,8,9,       // 0123456789
    	0,0,0,0,0,0,0,             // :;<=>?@ (gap)
    	10,11,12,13,14,15,         // ABCDEF 
    	0,0,0,0,0,0,0,0,0,0,0,0,0, // GHIJKLMNOPQRS (gap)
    	0,0,0,0,0,0,0,0,0,0,0,0,0, // TUVWXYZ[/]^_` (gap)
    	10,11,12,13,14,15          // abcdef 
    };
    void FromHex( BYTE* pSrc, int nSrcLen, BYTE* pDest )
    {
    	for (int j=0; j<nSrcLen; j += 2 ) {
    		int d =  DecLookup[*pSrc++ ] << 4;
    		    d |= DecLookup[*pSrc++ ];
    		*pDest++ = (BYTE)d;
    	}
    }
    

    Notes:

    笔记:

    In the final (ultra-fast)

    决赛(超快)

    ToHex function, note the usage of ToHex函数,请注意 s.GetBuffer() and s.GetBuffer()s.ReleaseBuffer().  The function allocates the entire output buffer before it starts.  This avoids that s.ReleaseBuffer()的用法。 该函数在启动之前分配整个输出缓冲区。 这样可以避免前面提到的 Significant Problem with Long Strings that I mentioned earlier.  I could have allocated a separate buffer and set the result string to it as a final step, but that's one (possibly large) memory copy that I wanted to avoid.  By using GetBuffer, I allocate and "freeze" the CString buffer while I'm filling it using high-speed pointer operations.

    All of the above functions would be safer if they had some error handling.  For instance, the FromHex functions all assume that the output buffer is large enough to hold the resulting binary data.  I omitted that but you might want to be more careful.  Note the technique used in the CryptoAPI functions, and emulate what Microsoft has done.

    如果上述所有功能都进行了一些错误处理,它们将更加安全。 例如,FromHex函数全部假定输出缓冲区足够大,可以容纳生成的二进制数据。 我忽略了这一点,但您可能需要更加小心。 请注意CryptoAPI函数中使用的技术,并模拟Microsoft所做的事情。

    Also, none of the FromHex

    另外,FromHex都不

    Xxxx routines take any special action when encountering an invalid hex digit; in fact, the fastest one may fail with an access violation if it indexes beyond the end of the lookup table.  In my case (and to avoid complicating this article) I assumed that I'd always have valid hexadeximal data.  You may not want to make that assumption.

    The ToHexManual, ToHexSlow, FromHexManual, and FromHexSlow all assume that the letter digits are uppercase (ABCDEF). The FromHex

    ToHexManual,ToHexSlow,FromHexManual和FromHexSlow均假定字母数字为大写(ABCDEF)。 FromHex

    如果找到小写的十六进制数字,则它们的 Xxxx versions of these will fail if lowercase hex digits are found.  The CryptoAPI functions use lowercase.

    The ToHex (fast) function generates lowercase letter-digits (abcdef) and FromHex (fast) will work with either uppercase or lowercase.  If you want uppercase output from ToHex, you can select the entire table in Visual Stuido, then use Edit/Advanced/Make Uppercase (If you want the option of using either, just create two tables).

    ToHex(快速)功能生成小写字母数字(abcdef),FromHex(快速)将使用大写或小写字母。 如果要从ToHex输出大写字母,可以在Visual Stuido中选择整个表,然后使用“编辑/高级/制作大写字母”(如果要选择使用其中一个,只需创建两个表)。

    The timing test results are interesting.   I read in a large (1MB) binary file (a ZIP file), then started the timer and ran 10 iterations of each function. Approx Ratio Debug Release (Release) ToHexManual 22,297 20,985 446 : 1 ToHexSlow 34,016 37,891 806 : 1 ToHexCryptoAPI 3,981 4,056 86 : 1 ToHex (fast) 172 47 1 : 1 FromHexManual 110 70 1.6 : 1 FromHexSlow 11,457 2,360 52 : 1 FromHexCryptoAPI 500 500 11 : 1 FromHex (fast) 47 45 1 : 1All times are in milliseconds, based on the less-than-precise GetTickCount() function.   I also ran a 100-iteration test on each to verify and got similar performance ratios.  The really big numbers for ToHexManual and ToHexSlow are almost certainly caused, at least in part, by the

    Significant Problem with Long Strings issue (which they both use).  

    The FromHexManual speed was faster than I thought it would be.  Upon examining the compiler-generated ASM source code, I found that the compiler had "inlined" the function.  Also, it seems that the calculate-and-jump-conditionally sequence is handled very efficiently on my AMD-based PC -- it's only about 50% slower than the lookup-table technique.


    In any case, the lookup-table versions proved to be significantly faster than the others.

    时序测试结果很有趣。 我读了一个大(1MB)二进制文件(一个ZIP文件),然后启动了计时器并为每个函数运行了10次迭代。 近似比率调试版本(发布)ToHexManual 22,297 20,985 446:1 ToHexSlow 34,016 37,891 806:1 ToHexCryptoAPI 3,981 4,056 86:1 ToHex(快速)172 47 1:1 FromHexManual 110 70 1.6:1 FromHexSlow 11,457 2,360 52:1 FromHexCryptoAPI 500 :1 FromHex(快速)47 45 1:1所有时间均以毫秒为单位,基于精确度不到的GetTickCount()函数。 我还对每个对象进行了100次迭代测试,以验证并获得相似的性能比。 几乎可以肯定,ToHexManual和ToHexSlow的真正大数字至少部分是由


    FromHexManual的速度比我想象的要快。 检查编译器生成的ASM源代码后,我发现编译器已“内联”了该函数。 另外,似乎计算和跳转条件 在基于AMD的PC上,onally序列的处理效率很高-仅比查找表技术慢50%。


    无论如何,事实证明查找表版本比其他版本要快得多。

    [i]References:[/i]

    [i] 参考:[/ i]

    CryptBinaryToString Function

    CryptBinaryToString函数

    http://msdn.microsoft.com/en-us/library/aa379887(VS.85).aspx http://msdn.microsoft.com/zh-CN/library/aa379887(VS.85).aspx

    CryptStringToBinary Function

    CryptStringToBinary函数

    http://msdn.microsoft.com/en-us/library/aa380285(VS.85).aspx http://msdn.microsoft.com/zh-CN/library/aa380285(VS.85).aspx

    How fast is your ASM hex converter?

    您的ASM十六进制转换器有多快?

    https://www.experts-exchange.com/Programming/Languages/Assembly/Q_20272901.html https://www.experts-exchange.com/Programming/Languages/Assembly/Q_20272901.html

    This Experts-Exchange "question" was really a challenge to create a particular kind of hexadecimal output in intel ASM.  The lookup table technique won out easily... until some smarty pants!!! figured out how to use MMX opcodes and handle larger chunks of data.   Interesting reading, and a lot of fun for the participants!

    在Intel ASM中创建特定类型的十六进制输出确实是一个专家交流的“问题”。 查找表技术很容易胜出...直到有些

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    =-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=

    If you liked this article and want to see more from this author,  please click the Yes button near the:

    如果您喜欢这篇文章,并希望从该作者那里获得更多信息请单击旁边的按钮:

          Was this article helpful?

    本文是否有帮助?

    label that is just below and to the right of this text.   Thanks!

    此文字下方和右侧的标签。

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    =-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=-=- =-=-=-=

    翻译自: https://www.experts-exchange.com/articles/1290/Fast-Hexadecimal-Encode-and-Decode.html

    十六进制解码

    展开全文
  • 我们用十六进制查看打开一个可执行程序,如下图: 最左边的00000000表示文件中的相对地址,其后的h表示该地址为十六进制表示方式; 中间的每行是文件的十六字节内容,在磁盘上最终当然是二进制,这里用十六进制给...
  • java 十六进制浮点 我如何遇到十六进制浮点数 我正在Java :: Geci中开发一种新功能,以减少代码重新格式化的可能性。 如果重新格式化,当前版本的代码将覆盖原本相同的代码。 这很烦人,因为按下重新格式化键的...
  • 进制进制编辑Sometimes names and terms are pretty interchangeable and everyone understands what is being referred to without confusion, but then there are times when things are not so clear and ...
  • 十六进制转八进制c++代码Read: 8051 Microcontroller programming using Keil Uvision IDE 阅读: 使用Keil Uvision IDE进行8051单片机编程 将HEX文件上传到微控制 (Uploading a HEX file to Microcontroller) ...
  • • 改进了对查找/替换的支持 • 改进了 Mac OS X 支持 • 改进了 Windows 下的系统集成 • 改进了编码检测结果 • 改进了十六进制编辑支持 • 在十六进制区域添加了更多的数据格式复制/粘贴选择 • 添加了新功能:在...
  • 十六进制颜色 rgb颜色Do you find yourself needing a color code for the website work that you are doing and just want a quick simple way to get it? Now you can enjoy color code finding goodness with ...
  • 十六进制的数怎么存储格式Problem statement: 问题陈述: Write an assembly language program to add hexadecimal numbers stored in continuous memory or in an array. 编写汇编语言程序以添加存储在连续...
  • Madedit-Mod是基于MadEdit的跨平台文本/十六进制编辑,其中记录了我或其他开发人员的关键错误修复程序。 添加了许多新功能,例如“拖放编辑”(跨平台),“突出显示文字”等。我之所以维护该项目是因为MadEdit的...
  • HexEditor是一个小型,快速,简单的十六进制编辑。它使用可重复使用的控制HexBox2十六进制编辑功能。 基于HexBox-1.6.0。 此C#控件可用于每个.NET Framework应用程序。 受欢迎的翻译和程序员支持新版本(2.0.1)...
  • 十六进制编辑我觉得是个必需的工具,遥想当年用文曲星的时候,Pacmanager、Ewayeditor…… 之前都在用WinHex,好用,但是是个收费软件,老用着破解版心里还是不舒服 后来发现这个名叫“HxD”东西,大部分功能都...
  • 二进制和十六进制

    千次阅读 2018-08-16 08:40:17
    课程导言 【最早的编程语言是二进制语言,也是计算机能够直接...通过本篇的学习,你将了解到为什么计算机能够直接识别二进制语言,二进制的计数原理以及与十进制、十六进制之间的数值转换。】   在讲述二进制之...
  • 二进制十六进制与ASCII码表

    千次阅读 2018-09-14 18:26:32
    二进制与十六进制 计算机的数据存储 计算机的数据表示 字符 二进制与十六进制 二进制 ------&gt; 每位只能用0,1表示 二进制到十进制的转换 ------&gt; 110 = 1*2^2 + 1*2^1 + 0*2^0 = 6 十六...
  • 在网上找了很多十六进制数据转ASCII码的工具,都不十分满意。于是自己写了个小工具,分享给大家,欢迎指正。(该工具不适用于unicode转换,后续可能会增加该功能)
  • 二进制十六进制 二进制:每位只能用0,1表示; 二进制数相加二进制到十进制的转换; 十六进制:每位只能用[0,15]来表示,其中A~F表示10,11,12,13,14,15 - 十六进制与二进制之间的转化:4位二进制表示一个16...
  • notepad++二进制(十六进制)查看插件,在新版本的notepad++中取消了该插件,但是该插件又十分好用,是故放上来跟大家共享
  • wxHexEditor的优点: ...三、齐全的十六进制编辑功能; 四、支持物理存储器底层读写,能备份,恢复和擦除(必须有根权限,在Windows 7下请以管理员方式运行); 五、支持常见的各类哈希值校验算法和文件比较等!
  • 原文连接: ... 怎样将字符串转换成十六进制以及其逆转换。 背景 本文将告诉你怎样将字符串转换成十六进制以及其逆转换。 我为我的智能卡应用而做的这个程序。较早前,我...
  • Java十六进制浮点文字

    2020-06-17 10:59:24
    我如何遇到十六进制浮点数 我正在Java :: Geci中开发一种新功能,以减少代码重新格式化的可能性。 如果重新格式化,当前版本的代码将覆盖原本相同的代码。 这很烦人,因为按下重新格式化键的快捷键相当容易,而且...
  • 十六进制转换成字符串

    千次阅读 2011-09-30 11:26:25
    我调用别人封装好的一个函数从网络上接收数据,发现接收到的都是十六进制数据,本来接收到的应该是中文字符,我应该用什么函数把十六进制数据转化为中文,屏幕上输出。   用c或c++语言实现.   谢谢! 问题...
  • 3、一个能够处理十六进制字节的小程序或者是十六进制编辑(这里我们打算两种方法都介绍,建议用python代码实现部分功能,因为大多数十六进制编辑是付费的,而我们处理字节并不需要很多,无需小题大做,当然你...
  • pgsql转储 Hexdump是一种实用程序,它以十六进制,十进制,八进制或ASCII显示二进制文件的内容。 它是用于检查的实用程序,可用于数据恢复 ,逆向工程和编程。 学习基础 Hexdump可以毫不费力地为您提供输出,...
  • 本文讲的是【译】CSS 十六进制颜色揭秘, 原文地址:CSS Hex Colors Demystified 原文作者:Dave Gash 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Cherry 校对者:薛定谔的猫、...
  • 这是将字节数组byte[]转换为... 可能重复 请参阅此以获取更多代码段– 用Java将字符串转换为十六进制 1. Apache Commons编解码 最简单的方法。 pom.xml <dependency> <groupId>common...
  • 尽管如此, 匹配每种Pantone颜色的精确十六进制代码仍然是一项艰巨的工作。 而且,由于有了这个免费的Web应用程序,您只需单击一个按钮就可以找到十六进制代码 。 另请参阅: Web设计人员的色彩理论背后的基础 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,189
精华内容 7,675
关键字:

十六进制翻译器