当前位置:首页 > 数字货币资讯 > 正文内容

hex(和煦)

xytest2023-03-26 06:19数字货币资讯216

hex(和煦)

hex可能是相关行业人士都值得关注的知识,在此币圈网对和煦进行详细的介绍,并拓展一些相关的知识分享给大家,希望能够为您带来帮助!

本文目录:

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、

hex什么意思

Hex(全称:Intel HEX)文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件,由任意数量的十六进制记录组成。 扩展资料

在Intel HEX文件中,每一行包含一个HEX记录。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPROM编程器或模拟器使用Intel HEX文件。

如何解析HEX

hex文件是用ASCII来表示二进制的数值,十六进制数组成的指令或者数据,每一行就是一个hex记录。由于单片机执行的只能是二进制指令和数据,而hex文件是十六进制数,所以烧录器的工作必然有一个进制转换机制。

hex文件的内容都是有规律的编码,我们可以对它进行解析,以第一行 :020000040800F2 为例:

1) 每一行都以 :(0x3A)开头

2) 第1个字节0x02 ,表示数据区的字节个数

3) 第2、3字节0x00, 0x00 ,表示偏移地址或无用填0

4) 第4个字节0x04, 表示本行记录的数据类型

‘00’ Data Record                  :用来记录数据, HEX文件的大部分记录都是数据记录

‘01’ End of File Record              :用来标识文件结束,放在文件的最后,标识HEX文件的结尾

‘02’ Extended Segment Address Record  :用来标识扩展段地址的记录

‘03’ Start Segment Address Record    :段地址 STM32不用

‘04’ Extended Linear Address Record  :用来标识扩展线性地址

‘05’ Start Linear Address Record    :程序启动运行的地址

5) 第5、6个字节0x08, 0x00即是数据

6) 第7个字节0xF2是校验字节,校验和的算法为:计算从0x3A 以后(不包括0x3A)的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出得值就是此行得校验和。

7) 每条数据最后还有0x0d (回车键)、 0x0a(换行键)

0x3a  [数据长度-1Byte] [数据地址-2Byte] [数据类型-1Byte] [数据-nByte] [验证码-1Byte] 0x0d0x0a

注意:由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,就有了Extended Linear Address Record。如果这行的数据类型是0x04,那么,这行的数据就是随后数据的基地址。例如:

第一行,是Extended Linear Address Record,里面的数据,也就是基地址是0x0004,

第二行是Data Record,里面的地址值是0x0000。那么数据18F09FE518F09FE518F09FE518F09FE5要写入FLASH中的地址为(0x0004 16) | 0x0000,也就是写入FLASH的0x40000这个地址。

第三行的数据的写入地址为0x40010。当一个HEX文件的数据超过7k的时候,文件中就会出现多个Extended Linear Address Record。

----------------------------------------------------

:020000040008F2

:10000400FF00A0E314209FE5001092E5011092E5A3

:00000001FF      

-----------------------------------------------------

对上面的HEX文件进行分析:

第1条记录的长度为02,LOAD

OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0008,校验和为F2。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为(0x0008

16)。后面的数据记录都以这个地址为基地址。

第2条记录的长度为10(16),LOAD

OFFSET为0004,RECTYPE为00,说明该记录为数据记录。数据为FF00A0E314209FE5001092E5011092E5,共16个BYTE。这个记录的校验和为A3。此时的基地址为0X80000,加上OFFSET,这个记录里的16BYTE的数据的起始地址就是0x80000

+ 0x0004 = 0x80004.

第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识文件的结尾。

在上面这个例子里,实际的数据只有16个BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址为0x0004.

计算从(0x3a)以后的所有各字节的和模256的余。

即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出的值就是此行校验码。举一个简单的例子,

如第一行020000040800F2

0x02+0x00+0x00+0x00+0x04+0x08+0x00 = 0x0E

0x100 – 0x0E = 0xF2

for (i = 0; i pHexFileFormat-DataSize; i++)

{

     tempCheckSum += pHexFileFormat-bData[i];

}

tempCheckSum = 0x100 - tempCheckSum;

if (tempCheckSum != pHexFileFormat-CheckSum)

{

     //Error

}

#ifndef CHEX_H

#define CHEX_H

#include QFile

const quint8 MIN_HEX_LINE_COUNT_LENGHT = 12;

typedef enum __tagHexErrorCode

{

    HEX_NO_ERROR = 0,

    HEX_FORMAT_ERROR,

    HEX_VERIFY_ERROR,

    HEX_LENGHT_ERROR,

    HEX_USERPAPR_EEROR,

}EHexErrorCode;

typedef enum __tagHexType

{

    RECORD_DATA = 0,

    RECORD_END_OF_FILE,

    RECORD_EXTENDED_SEGMENT_ADDRESS,

    RECORD_START_SEGMENT_ADDRESS,

    RECORD_EXTENDED_LINEAR_ADDRESS,

    RECORD_START_LINEAR_ADDRESS,

    RECORD_HEX_MAX,

}emHexType;

typedef struct __tagHexLineData

{

    emHexType  type;

    quint8      count;

    quint32    address;

    quint8      data[80];

    quint8      checksum;

    quint8      datalen;

}stHexLineData;

class CHex

{

public:

    CHex();

    EHexErrorCode getHexLineData(QByteArray bydata,stHexLineData *p);

private:

    char ConvertHexChar(char ch);

};

#endif // CHEX_H

#include "chex.h"

const QString HexTypeTable[6] =

{

    "00","01","02","03","04","05",

};

CHex::CHex()

{

}

char CHex::ConvertHexChar(char ch)

{

    if((ch = '0') (ch = '9'))

        return (ch-0x30);

    else if((ch = 'A') (ch = 'F'))

        return ((ch-'A')+10);

    else if((ch = 'a') (ch = 'f'))

        return ((ch-'a')+10);

    else return (-1);

}

EHexErrorCode CHex::getHexLineData(QByteArray bydata,stHexLineData *p)

{

    quint8 i = 0;

    quint8 cs_temp = 0;

    QString str(bydata);

    char *pcdata = bydata.data();

    quint32 linelen = str.size();

    if((linelen MIN_HEX_LINE_COUNT_LENGHT)) {return HEX_LENGHT_ERROR;}

    if(*pcdata != 0x3A) {return HEX_FORMAT_ERROR;}//必须以":"号开始

    //获取Type

    QString stype = str.mid(7,2);

    for(i = 0; i RECORD_HEX_MAX; i++)

    {

        if(stype == HexTypeTable[i])

        {

            p-type = (emHexType)i;

            break;

        }

    }

    if(i == RECORD_HEX_MAX) {qDebug("HEX_FORMAT_ERROR");return HEX_FORMAT_ERROR;}

    cs_temp += (ConvertHexChar(*(pcdata + 7)) 4) | ConvertHexChar(*(pcdata + 8));

    //获取count

    p-count = (ConvertHexChar(*(pcdata + 1)) 4) | ConvertHexChar(*(pcdata + 2));

    cs_temp += p-count;

    if(p-count != (((linelen - 2) / 2) - 5)) {qDebug("HEX_FORMAT_ERROR");return HEX_FORMAT_ERROR;}

    //获取address

    p-address = (ConvertHexChar(*(pcdata + 3)) 12) | (ConvertHexChar(*(pcdata + 4)) 8) | (ConvertHexChar(*(pcdata + 5)) 4) | ConvertHexChar(*(pcdata + 6));

    cs_temp += (p-address 8) 0xFF;

    cs_temp += p-address 0xFF;

    //获取data

    for(i = 0; i p-count; i++)

    {

        p-data[i] = (ConvertHexChar(*(pcdata + 2*i + 9)) 4) | ConvertHexChar(*(pcdata + 2*i + 10));

        cs_temp += p-data[i];

    }

    p-checksum = (ConvertHexChar(*(pcdata + 2*i + 9)) 4) | ConvertHexChar(*(pcdata + 2*i + 10));

    if(p-checksum != ((0x100 - cs_temp) 0xFF))

    {

        qDebug("HEX_VERIFY_ERROR");

        return HEX_VERIFY_ERROR;

    }

    p-datalen = p-count;

    return HEX_NO_ERROR;

}

老外说hex是什么意思

外国人说hex是施魔法的意思。

hex:名词,十六进制;妖法;巫婆,助动词意思是施魔法,动词是施魔法于...,过去式hexed;过去分词,hexed;现在分词,hexing;第三人称单数,hexes;复数,hexes。

双语例句

1、Hexes in fairy tales always play the role of villain。

童话中的女巫总是扮演着反派角色。

2、The irrevocable hex stayed with the prince until he died。

无法解除的符咒一直伴随王子,直到他死去。

3、An enchanting young woman hexed the brave soldier。

一个身形妖娆的年轻女子蛊惑了勇敢的士兵。

4、They tried to zombify Hex as well, but he escaped and tracked them down again.

他们也试图使 Hex 僵尸化,但他逃脱并再次找到了他们。

hex是什么文件格式

hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式。

生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。

Intel HEX文件由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和常量数据的十六进制编码数字组成。

扩展资料:

一个Intel HEX文件必须有一个文件结束记录,这个记录的类型域必须是01,Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。

Intel hex 文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域CC到数据域最后一个字节的所有字节总和的 2 的补码。

参考资料来源:百度百科——hex文件格式

HEX是什么?

Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPROM编程器或模拟器使用Intel HEX文件。

记录格式

Intel HEX由任意数量的十六进制记录组成。每个记录包含5个域,它们按以下格式排列:

:llaaaatt[dd...]cc

每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:

: 每个Intel HEX记录都由冒号开头.

ll 是数据长度域,它代表记录当中数据字节(dd)的数量.

aaaa 是地址域,它代表记录当中数据的起始地址.

tt 是代表HEX记录类型的域,它可能是以下数据当中的一个:

00 – 数据记录

01 – 文件结束记录

02 – 扩展段地址记录

04 – 扩展线性地址记录

dd 是数据域,它代表一个字节的数据.一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符.

cc 是校验和域,它表示这个记录的校验和.校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足.

数据记录

Intel HEX文件由任意数量以回车换行符结束的数据记录组成.数据记录外观如下:

:10246200464C5549442050524F46494C4500464C33

其中:

10 是这个记录当中数据字节的数量.

2462 是数据将被下载到存储器当中的地址.

00 是记录类型(数据记录)

464C…464C是数据.

33 是这个记录的校验和.

扩展线性地址记录(HEX386)

扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录包含数据地址的高16位.扩展线性地址记录总是有两个数据字节,外观如下:

:02000004FFFFFC

其中:

02 是这个记录当中数据字节的数量.

0000 是地址域,对于扩展线性地址记录,这个域总是0000.

04 是记录类型 04(扩展线性地址记录)

FFFF 是地址的高16位.

FC 是这个记录的校验和,计算方法如下:

01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).

当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.线性地址保持有效,直到它被另外一个扩展地址记录所改变.

通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址.

以下的例子演示了这个过程..

来自数据记录地址域的地址 2462

扩展线性地址记录的数据域 + FFFF

------------

绝对存储器地址 FFFF2462

扩展段地址记录(HEX86)

扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段.扩展段地址记录总是有两个数据字节,外观如下:

:020000021200EA

其中:

02 是记录当中数据字节的数量.

0000 是地址域.对于扩展段地址记录,这个域总是0000.

02 是记录类型 02(扩展段地址记录)

1200 是地址段.

EA 是这个记录的校验和,计算方法如下:

01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).

当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.段地址保持有效,直到它被另外一个扩展地址记录所改变.

通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址.

以下的例子演示了这个过程..

来自数据记录地址域的地址 2462

扩展段地址记录数据域 + 1200

---------

绝对存储器地址 00014462

文件结束(EOF)记录

Intel HEX文件必须以文件结束(EOF)记录结束.这个记录的记录类型域的值必须是01.EOF记录外观总是如下:

:00000001FF

其中:

00 是记录当中数据字节的数量.

0000 是数据被下载到存储器当中的地址.在文件结束记录当中地址是没有意义被忽略的.0000h是典型的地址.

01 是记录类型 01(文件结束记录)

FF 是这个记录的校验和,计算方法如下:

01h + NOT(00h + 00h + 00h + 01h).

Intel HEX文件例子:

下面是一个完整的Intel HEX文件的例子:

:10001300AC12AD13AE10AF1112002F8E0E8F0F2244

:10000300E50B250DF509E50A350CF5081200132259

:03000000020023D8

:0C002300787FE4F6D8FD7581130200031D

:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016

:04003F00A42EFE22CB

:00000001FF

只要你仔细阅读了上述,那么你就已经了解了和煦的相关知识,如果屏幕面前的你还有什么对hex好的建议和想法,欢迎各位再下面评论区评论出来,我们将及时回复。

分享给朋友:

相关文章

以太坊现在多少钱一枚

以太坊现在多少钱一枚

以太坊现在多少钱一枚马斯克表示,特斯拉暂停使用比特币支付。他说加密货币是个好主意,但不能以牺牲环境为代价。特斯拉不会出售任何比特币,但会寻找比比特币耗能更少的其他加密货币。推测马斯克在这条推文之前做了...

今日雷达币交易价格最近什么情况今日雷达币交易价格最新价格简介

今日雷达币交易价格最近什么情况今日雷达币交易价格最新价格简介

最近有一位之前找过币圈网的用户问了我们小编的一个问题,我相信这也是很多币圈朋友经常会疑惑的问题:今日雷达币交易价格相关问题,今日雷达币交易价格最新价格相关问题,带着这一个问题,让专业的小编告诉您原因。...

USTC价格_USTC今日行情_USTC币未来价值如何?

USTC价格_USTC今日行情_USTC币未来价值如何?

USTC价格_USTC今日行情_USTC币实时行情,Terra 的稳定币 USTC 及其原生币 LUNA(现称为 LUNC)是 2022 年夏季崩盘的核心。USTC 失去了与美元的挂钩,并创建了...

虚拟货币交易价格查询的简单介绍

虚拟货币交易价格查询的简单介绍

虚拟货币交易价格查询可能是相关行业人士都值得关注的知识,在此币圈网对进行详细的介绍,并拓展一些相关的知识分享给大家,希望能够为您带来帮助! 虚拟货币为什么还在持续火爆? 近日,加密数字资产龙头比...

fil币手机app软件交易中心具体解答和fil币应用细致分析

fil币手机app软件交易中心具体解答和fil币应用细致分析

最近有很多小伙伴咨询关于fil币手机app软件交易中心的问题,小编结合多年的经验整理出来一些fil币应用对应的资料,分享给大家。 TIFI币怎么买 在欧易交易所官网购买。 欧易交易所OKX是数...