精华内容
下载资源
问答
  • 我们用十六进制查看打开一个可执行程序,如下图:最左边的00000000表示文件中的相对地址,其后的h表示该地址为十六进制表示方式;中间的每行是文件的十六字节内容,在磁盘上最终当然是二进制,这里用十六进制给出...

    我们用十六进制查看器打开一个可执行程序,如下图:

    最左边的00000000表示文件中的相对地址,其后的h表示该地址为十六进制表示方式;

    中间的每行是文件的十六字节内容,在磁盘上最终当然是二进制,这里用十六进制给出;

    分号之后的部分是相应应十六进制,按ASCII码翻译成的字符。

    那为什么翻译出的部分大多是.号呢?

    首先一个原因是在ASCII表中,只有20-7E是有对应可显示字符,其他编码并没有对应可显示字符,这些字符就全统一用.表示。

    第二个原因是更多的内容本来就不是给人看的字符串,按ACSII码能翻译成字符也是对不上其本意的,比如可能是数字类型有可能是地址也有可能是编译后的指令。

    很多人没明白数值和字符在内存(或磁盘)上的区别,数值是真从0开始编下去的比如16是0010、17是0011,但字符是按ASCII等编的16是3136、17是3137,这区别是相当大的。

    至于说为什么很多.对应的十六进制是00,或者说十六进制里为什么那么多00,应该是00是默认的填充值,就如C语言字符数组没用的都赋为00那样。

    其实WireShark等截到包的内容也大多同此,http协议的内容直接是人读得懂的字符串,其下协议一般都是定义好的代号(主要是数值类型)比如0800表示IP协议,WireShark查看协议时看到很多00和.

    http内容直接是字符串,其他协议更多的是协议自定义的代号(或叫协议定义自定义的编码),可能这也是很多人觉得http与其下各层协议甚至其他应用协议差别很大的原因。

    展开全文
  • 我们用十六进制查看打开一个可执行程序,如下图: 最左边的00000000表示文件中的相对地址,其后的h表示该地址为十六进制表示方式; 中间的每行是文件的十六字节内容,在磁盘上最终当然是二进制,这里用十六进制...

    我们用十六进制查看器打开一个可执行程序,如下图:

    最左边的00000000表示文件中的相对地址,其后的h表示该地址为十六进制表示方式;

    中间的每行是文件的十六字节内容,在磁盘上最终当然是二进制,这里用十六进制给出;

    分号之后的部分是相应应十六进制,按ASCII码翻译成的字符。

    那为什么翻译出的部分大多是.号呢?

    首先一个原因是在ASCII表中,只有20-7E是有对应可显示字符,其他编码并没有对应可显示字符,这些字符就全统一用.表示。

    第二个原因是更多的内容本来就不是给人看的字符串,按ACSII码能翻译成字符也是对不上其本意的,比如可能是数字类型有可能是地址也有可能是编译后的指令。

     

    很多人没明白数值和字符在内存(或磁盘)上的区别,数值是真从0开始编下去的比如16是0010、17是0011,但字符是按ASCII等编的16是3136、17是3137,这区别是相当大的。

    至于说为什么很多.对应的十六进制是00,或者说十六进制里为什么那么多00,应该是00是默认的填充值,就如C语言字符数组没用的都赋为00那样。

     

    其实WireShark等截到包的内容也大多同此,http协议的内容直接是人读得懂的字符串,其下协议一般都是定义好的代号(主要是数值类型)比如0800表示IP协议,WireShark查看协议时看到很多00和.

    http内容直接是字符串,其他协议更多的是协议自定义的代号(或叫协议定义自定义的编码),可能这也是很多人觉得http与其下各层协议甚至其他应用协议差别很大的原因。

    转载于:https://www.cnblogs.com/lsdb/p/6806286.html

    展开全文
  • 在此基础上,每一个数字(一位的)代表16的某一个次方。一位十进制数只能用来表示0-...当使用C编程语言时,我们在十六进制数前加上“0x”前缀以表示其为16进制数,于是,十六进制的2A应该写成 0x2A 。 微处理可以
    
    

    在此基础上,每一个数字(一位的)代表16的某一个次方。一位十进制数只能用来表示0-9,然而对于十六进制数而言,十进制的数字10到15可以由单个字母A,B,C,D,E,F表示。例如,16进制的E是十进制的14,16进制的2A是十进制的42(两个16加上10)。当使用C编程语言时,我们在十六进制数前加上“0x”前缀以表示其为16进制数,于是,十六进制的2A应该写成 0x2A 。


    微处理器可以进行加、乘、除等算术运算和逻辑运算(如“X是否比Y大”)


    处理器的执行动作由一个外部的时钟控制着。这个时钟规律地产生心跳,每一次心跳,处理器就运行一小段时间。例如,一个处理器可以在每个时钟中断中执行一条指令。时钟滴答的速率代表了CPU的速度。一个100Mhz(兆赫兹)的处理器每秒钟接受1亿次时钟滴答。但是这并不是说CPU的效率由时钟滴答的速度决定,因为不同CPU在一个时钟滴答中可以执行多条指令,当然相同情况下,更快的时钟跳动速率代表了更强大的CPU。CPU执行的指令非常简单。例如:从X位置的内存读取数据到寄存器Y。寄存器是CPU的内置存储部件。有的指令可能会中断CPU正在执行的操作使其转而执行内存中的其他指令。这些微小的组件给予了CPU无限的能量使得其能在一秒钟内执行一百万甚至十亿条指令。


    指令需要像被执行的时候一样从内存中读取。指令本身可能引用内存中的数据,而这些数据必须在合适的时间从内存中读取或保存进内存。


    CPU中寄存器的大小,数量和类型完全由CPU的类型决定。一个Intel 4086处理器和Alpha AXP处理器的寄存器是不一样的。一开始,Intel系列是32位的而Alpha AXP则是64位的。大体上来说,虽然任意给定的处理器有许多相同目的的寄存器和较少数量的

    专用寄存器。大多数寄存器有如下一些用于特殊目的的寄存器:


    程序计数器(PC)

    这个寄存器保存下一条执行指令的地址。每次读取一条指令,程序计数器中的内容就会自动改变。


    堆栈指针(SP)

    处理器必须能访问大量外置的读写随机存储器(RAM,用来帮助存储短期数据)。堆栈采用后进先出的策略(LIFO)在外部内存中方便地存取值。通常,处理器处理器有特定的指令来让你对堆栈上的值push和pop。换言之,如果你push了两个值x和y,然后pop一下,会得到y。一些堆栈从内存的顶端往下扩展而另一些则从内存的底部向上扩展。有一些处理器则都支持上述两种方式,比如ARM。


    处理机状态(PS)

    指令可能产生结果。例如“寄存器X的内容是否比寄存器Y的内容大?”会产生结果true或false。PS寄存器持有这个结果信息或者处理器当前状态的其他信息。例如,大多数处理器有至少两种操作模式,核心态和用户态,而PS寄存器则会记录




    附:


    In this base, each digital represents a power of 16. As decimal numbers only go from 0 to 9 the numbers 10 to 15 are represented as a single digit by the letters A, B, C, D, E and F. For example, hexadecimal E is decimal 14 and hexadecimal 2A is decimal 42 (two 16s) + 10). Using the C programming language notation (as I do throughout this book) hexadecimal numbers are prefaced by ``0x''; hexadecimal 2A is written as 0x2A .


    Microprocessors can perform arithmetic operations such as add, multiply and divide and logical operations such as ``is X greater than Y?''.


    The processor's execution is governed by an external clock. This clock, the system clock, generates regular clock pulses to the processor and, at each clock pulse, the processor does some work. For example, a processor could execute an instruction every clock pulse. A processor's speed is described in terms of the rate of the system clock ticks. A 100Mhz processor will receive 100,000,000 clock ticks every second. It is misleading to describe the power of a CPU by its clock rate as different processors perform different amounts of work per clock tick. However, all things being equal, a faster clock speed means a more powerful processor. The instructions executed by the processor are very simple; for example ``read the contents of memory at location X into register Y''. Registers are the microprocessor's internal storage, used for storing data and performing operations on it. The operations performed may cause the processor to stop what it is doing and jump to another instruction somewhere else in memory. These tiny building blocks give the modern microprocessor almost limitless power as it can execute millions or even billions of instructions a second.


    The instructions have to be fetched from memory as they are executed. Instructions may themselves reference data within memory and that data must be fetched from memory and saved there when appropriate.

    The size, number and type of register within a microprocessor is entirely dependent on its type. An Intel 4086 processor has a different register set to an Alpha AXP processor; for a start, the Intel's are 32 bits wide and the Alpha AXP's are 64 bits wide. In general, though, any given processor will have a number of general purpose registers and a smaller number of dedicated registers. Most processors have the following special purpose, dedicated, registers:

    Program Counter (PC)This register contains the address of the next instruction to be executed. The contents of the PC are automatically incremented each time an instruction is fetched,

    Stack Pointer (SP)Processors have to have access to large amounts of external read/write random access memory (RAM) which facilitates temporary storage of data. The stack is a way of easily saving and restoring temporary values in external memory. Usually, processors have special instructions which allow you to push values onto the stack and to pop them off again later. The stack works on a last in first out (LIFO) basis. In other words, if you push two values, x and y, onto a stack and then pop a value off of the stack then you will get back the value of y.

    Some processor's stacks grow upwards towards the top of memory whilst others grow downwards towards the bottom, or base, of memory. Some processor's support both types, for example ARM.

    Processor Status (PS)Instructions may yield results; for example ``is the content of register X greater than the content of register Y?'' will yield true or false as a result. The PS register holds this and other information about the current state of the processor. For example, most processors have at least two modes of operation, kernel (or supervisor) and user. The PS register would hold information identifying the current mode.
    展开全文
  • 通用数制转换

    2019-07-03 16:41:41
    通用数制转换 使用计算机的人每时每刻都在与数打交道,在计算机内部,数是以二进制表示的,而我们习惯上使用的是十进 制数,所以计算机从我们这里接收到十进制数...制数,或者把十六进制数转换为十...
    使用计算机的人每时每刻都在与数打交道,在计算机内部,数是以二进制表示的,而我们习惯上使用的是十进
    制数,所以计算机从我们这里接收到十进制数后,要经过翻译,把十进制数转换为二进制数才能进行处理,这
    个过程是由计算机自动完成的。但是对程序员来说,有时需要把十进制数转换为二进制数、十六进制数和八进
    制数,或者把十六进制数转换为十进制数等,这都不是一件轻松的工作,为了使这项工作变得轻松愉快,作者
    用TURBO C 2.0编写了一个通用的数制转换程序TNS.C,使用它可以方便地完成2~36之间的各种数制的相互转
    换工作。
    
    一、数制转换的原理
    
    数制转换的基本原理是:将一个指定进制的数,从高位到低位,一位一位取出,并计算出每位的十进制值,然
    后乘以其数基的特定幂指数,得出这一位数的十进制值,将所有各位的十进制值相加得出这个数的十进制值,
    然后再将该十进制数转换为指定数制的数,此过程可以采用求余法进行,用这个十进制数作为被除数,用指定
    的数基作除数,连续求余,得出的余数依由个位到十位等的顺序组成新数,即得指定数制的数。
    
    二、程序设计的原理
    
    程序设计的关键有两点:
    ⑴把输入的数转换为十进制数
    从输入数值的高位开始,每取一位数字(X),判断它是否为该数制(数基为r)的有效数字,如果是有效数字,求
    出其十进制值,然后乘以数基(r)的n-1次幂(n为该数字在数值中所处依右到左的位数),即求“X * r攩n-1攪
    ”,求出该位数所表示的十进制数值,最后将各位数的十进制值求和,即得该数值的十进制值。
    ⑵把这个数的十进制值转换为指定数制的数
    这个转换过程可以方便地通过C语言提供的itoa,ltoa,ultoa三个函数来实现,它们都可以把以十进制表示的
    数值(整型、长整型、无符号长整型)转换为指定数制的字符串,它们的用法是:
    char *itoa(int value,char *string,int radix)
    cahr *ltoa(long value,char *string,int radix)
    char *ultoa(unsigned long value,char *string,int radix)
    其中,value是一个十进制数,radix是转换value过程中的数基,它必须在2~36之间,string为字符串。
    
    三、程序使用方法
    该程序采用DOS命令行格式:
    TNS <数值> <数制1的基> <数制2的基>
    其中,“数值”是数制1的有效数,“数制1的基”和“数制2的基”是有效的十进制数,可以取2~36之间的
    任意数。例如:
    TNS 128 10 16 <回车>
    屏幕显示的结果为:
    128(10) = 80(16)
    其中,等式左边为输入的数,等式右边为输出的数,括号中的数为该数的基,如80(16)的意义为十六进制的
    80,128(10)为十进制的128。
    再如:
    TNS 128 10 2 <回车>
    屏幕显示为:
    128(10) = 10000000(2)
    
    四、源程序清单
    
    /********************************************************/
    /* 程序名称: TNS.C 1.0 */
    /* 作 者: 董占山 */
    /* 完成日期: 1995-11-09 */
    /* 用 途: 2~36之间的各种数制的数任意转换 */
    /********************************************************/
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <math.h>
    
    /* 显示帮助信息 */
    void help()
    {
    printf("\nUsage : Translate the number between two number systems\n");
    printf("Syntex: TNS <number> <radix1> <radix2>\n");
    exit(0);
    }
    
    /* 显示错误信息 */
    void printerror(errno,num,base1)
    char errno,*num,*base1;
    {
    switch (errno) {
    case 1 : printf("\nError : Origin number %s(%s) is valid !!!\n",num,base1);
    break;
    case 2 : printf("\nError : radix (%s) is invalid !!!\n%s\n",base1,
    "Correct : radix>=2 and radix <=36");
    break;
    }
    help();
    }
    
    /* 数制转换函数 */
    void transnum(num,base1,base2)
    char *num,*base1,*base2;
    {
    int i,k,l,m,j,ibase1,ibase2;
    long inum=0;
    char temp[20];
    double r=0;
    i = strlen(num); /* 数值的长度 */
    ibase1 = atoi(base1); /* 数基1 */
    if ((ibase1<2) || (ibase1>36)) printerror(2,"",base1); /* 有效吗? */
    ibase2 = atoi(base2); /* 数基2 */
    if ((ibase2<2) || (ibase2>36)) printerror(2,"",base2); /* 有效吗? */
    for (j=0;j<i;j++) {
    r = pow(ibase1,i-j-1); /* 计算数基的幂指数 */
    if (ibase1<=10) l = '9' - (10 - ibase1); /* 计算有效的数范围 */
    else {
    m = 'a' + (ibase1 - 11);
    l = '9';
    }
    if ((num[j]>=48) && (num[j]<=l)) /* 求每位数字的十进制值 */
    k = num[j]-48;
    else if (ibase1>10) {
    /* 求每个字母所代表的十进制值 */
    if ((num[j]>='A') && (num[j]<=m - 32))
    k = num[j] - 'A'+10;
    else if ((num[j]>='a') && (num[j]<=m))
    k = num[j] - 'a'+10;
    else printerror(1,num,base1);
    }
    else printerror(1,num,base1);
    inum += k * (int) r; /* 累加计算结果 */
    }
    /* 输出转换结果 */
    printf("%s(%d) = %s(%d)\n",num,ibase1,ltoa(inum,temp,ibase2),ibase2);
    }
    
    /* 主程序 */
    main(argc,argv)
    int argc;
    char *argv[];
    {
    static char num[10],base1[10],base2[10];
    printf("(TNS)Translator of Number System 1.0 Copyright (c) 1995 Dong Zhanshan\n");
    switch (argc) {
    case 1:
    case 2:
    case 3: help();
    break;
    case 4: strcpy(num,argv[1]);
    strcpy(base1,argv[2]);
    strcpy(base2,argv[3]);
    transnum(num,base1,base2);
    }
    }
    
    
    
    posted on 2006-03-02 22:03 Aween's Blog 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/aween/archive/2006/03/02/341574.html

    展开全文
  • Radare - 逆向工程框架

    2019-10-05 02:44:33
    它已演变成由一个以十六进制编辑为中心所组成的项目,包括组装/分解,代码分析,脚本功能,分析和图形化代码与数据,并容易与unix集成。从本质上讲,它已经成为一个逆向工程框架,插件等等。 ...
  • 它还具有FTP/FTPS/sftp功能、十六进制查看,HTML编辑,cliptext,颜色标记、监视剪贴板、强大的搜索和替换、定制键盘快捷方式等功能。它内置完整的HTML/CSS1指令功能,可以用记事本编辑网页,支持直接在IE浏览...
  • 每个流可被选择,以查看其与它们的语法和十六进制翻译元件。它可以查看或打开特定类型的唯一要素,如序列头,延长十六进制查看模式来审视和定位偏移,将信息发送到一个文本查看能够将它复制到剪贴板,以及保存它以...
  • wxMEdit 现在有波兰文翻译了!...wxMEdit 是对编码和十六进制编辑支持很好的文本编辑。它是 MadEdit 的后继,并对其做了很多改进。  下载地址为: http://wxmedit.github.io/zh_CN/downloads.html    ...
  • FoxEditor是一款专业实用的文本编辑软件。该款编辑主要用于文本、... 在快速且平静的安装操作之后,您会受到熟悉的界面的欢迎,您可以将DOC导出到HTML或RTF格式,而十六进制代码可以翻译成二进制。  可以将选定文
  • wxMEdit 新增德文翻译

    2015-03-25 13:20:49
    个有更新的 wxMEdit fork。...wxMEdit 是对编码和十六进制编辑支持很好的文本编辑。它是 MadEdit 的后继,并对其做了很多改进。  下载地址为: http://wxmedit.github.io/zh_CN/downloads.html  
  • 使用十六进制编辑查找所需内容。 对于菜单补丁,这应该足够好。 00199900-名称0019C380-阿尔特斯001A0FA0-??? 001A6870-世界地图名称001AB670-菜单001AB910-材料001BF2F0-类别0019A190-简介标题 脚本文本是TOD_...
  • Java代码翻译为C#代码

    2015-07-05 07:30:29
    // 十六进制转换为二进制 byte[] decryptFrom = parseHexStr2Byte(data); Cipher cipher = Cipher.getInstance(AES_ALGORITHM);// 创建密码 cipher.init(Cipher.DECRYPT_MODE, genKey(key));// 初始化 byte...
  • 实验内容 1. 学习 MIPS指令系统,熟悉 MIPS指令格式及其汇编指令助记...左侧内为指令地址,中间是十六进制的指令编码,右侧是相应的标准汇编指 令,主要注意的是第二个程序,必须在裸机执行方式 核心 结果展示: ...
  • javap 命令学习笔记一

    2014-01-08 10:51:39
    public class ByteCodeDemo { ...在编译这个类后,你可以用十六进制编辑打开.class文件然后参照虚拟机规范翻译字节码。幸运的是有更简单的方法。JDK包含一个命令行的反汇编:javap,它可以转换
  • 从零开始学Python(2)

    2019-07-16 21:15:54
    PythonPython语言类型混合数字类型自动升级数字类型强制转换input() 函数二进制、八进制和十六进制其他进制转十进制十进制转其他进制字符串类型字符串间的操作类型转换函数算数运算符复合赋值运算 Python语言类型 ...
  • 6502微处理

    千次阅读 2005-03-14 20:10:00
    /* 6502微处理是FC(Family Computer 俗称任天堂红白机)使用的微处理,本文详细 的讲解了6502处理器的... 注意:符号&在原文中为$,表示的是一个十六进制数。*/6502微处理以下的多数信息都在“Commodore
  • (译)win32asm教程-4

    2002-03-13 08:58:00
    汇编中的所有东西被直接翻译十六进制码。换句话说,你没有把高级语言翻译为低级语言的编译器上的烦恼,汇编仅仅把汇编代码转化为原始数据。本章将讨论一些用来运算,位操作等的伪代码。还有跳转指令,比较等伪...
  • 由于最近需要用到注册表,并且操作很多系统设置,所以想吧关于微软注册表的东西都写出来,找了很久才发现,微软对于注册表做...多数硬件组件信息都以二进制数据存储,而以十六进制格式显示在注册表编辑中。 ...
  • 知识小结

    2017-12-26 21:26:53
    汇编语言程序由一系列的语句组成,其中包括指令和伪指令。指令被汇编器翻译为机器代码,...数据的形式可以是二进制、十六进制、十进制和ASCII码。  程序是顺序执行的,一条指令接着一条指令,除非执行了控制转移指令
  • 寡头 这是我在NativeScrit中开发的用于米兰... RGB到十六进制颜色转换= 本机脚本应用示例 使用的模板 用Javascript翻译打字稿 期末考试 项目讨论仅在官方日期 你必须要一起来 您的设计文件(印刷或通过电子邮件)
  • 类初始化 实例初始化

    2020-02-28 21:39:10
    可以查看字节码文件,如果翻译十六进制会发现有clinit字眼 所谓实例就是加载某一个类的实例化对象,这个时候才去加载成员变量(即非静态变量)和非静态代码块,以及对应的构造(最后),这里强调对应是因为构造...
  • wxMEdit 3.0 发布

    2015-08-04 11:53:01
    wxMEdit 是对编码和十六进制编辑支持很好的文本编辑。它是 MadEdit 的后继,并对其做了很多改进。   下载地址为: http://wxmedit.github.io/zh_CN/downloads.html   这一版本最重要更新是新增德文及波兰文...
  • x86汇编

    2018-10-15 21:39:15
    抽象层次: 硬件:唯一的物理层,由电子电路组成,是XOR、AND、OR和NOT等逻辑运算的...机器码:由操作码(opcode)组成,操作码是一些十六进制形式的数字,每一个代表特定的指令。 低级语言:计算机体系结构指令...
  • Intel HEX文件格式

    千次阅读 2004-07-11 18:37:00
    下面是Intel HEX文件格式,在Intel HEX文件中,每一行是一个HEX记录由十六进制数组成的机器码或者静态数据,Intel HEX文件经常被用于将程序或数据传输存储到ROM.EPROM,大多数编程和模拟器使用Intel HEX文件....
  • BASIC编辑

    2013-06-16 13:01:07
    没有瓶颈象虚拟的机器和代码翻译器,生成的代码是一个优化过的可执行程序.外部库是充分写了支持优化的汇编程序,每个程序非常快,命令常常比C/C++还快或等同. PureBasic真编译型的BASIC程序设计语言!生成的目标代码...
  • 顶点工具箱.exe

    2019-08-17 21:23:48
    MiniHex 迷你十六进制文件编辑 Notepad2 增强型记事本 Recuva 文件反删除工具 Unlocker 文件解锁工具 UPXShell 可执行文件压缩工具 VirusTotal Uploader 可疑文件上传扫描工具 硬件工具(共 7 个) ATTO ...
  • QuickEdit Pro 1.4.3.apk

    2019-04-18 17:07:18
    ✓轻松输入十六进制颜色值。 ✓自动检测字符集和编码。 ✓自动缩进新行。 ✓各种字体和大小。 ✓预览HTML,CSS和降价文件。 ✓打开最近打开或添加的文件集合中的文件。 ✓能够在有根设备上编辑系统文件。 ✓从FTP,...
  • 顶点工具箱 2.0.8版

    2012-10-14 21:09:30
    [ = ] GoogleTrans.exe 谷歌翻译器,版本:2.1 (Vista/7)或1.5.18 (XP) [ = ] Hash.exe 校验码计算器,版本:1.04 [ = ] Notepad2.exe 增强型记事本,版本:4.2.25 [ * ] Recuva.exe 文件反删除工具,版本:1.42.544...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

十六进制翻译器