text1.cpp

来自「vc 中一个窗口的建立 和怎么样写消息循环」· C++ 代码 · 共 81 行

CPP
81
字号
#include "string.h"
#include "stdio.h"

#include <stdlib.h>

#define SIZE 0xffff

//typedef unsigned int UINT16;

struct Item8
{
//  UINT16 Addr;
  unsigned int Addr;
  unsigned int Data;
};

struct Item32
{
  unsigned char Swich;
  struct Item8 Data8[4];
};

void main(void)
{
  FILE 	*InHex;
  FILE 	*OutTxt32;

  struct Item32 Data32[SIZE];
  char TempChar;
//  UNINT16 Addr;
  unsigned int Addr;
  unsigned int Length;
  unsigned int i,j;
  unsigned int sub1,sub2;

  InHex = fopen("asm51.hex","r");
  OutTxt32 = fopen("Out32.txt","w");

  for(i=0;i<SIZE;i++) Data32[i] = {0,{{0,0},{0,0},{0,0},{0,0}}};

  while(! feof(InHex))
  {
    TempChar = fgetc(InHex);
    if(TempChar == ':')
    {
        for(i=0;i<2;i++)
        {
          TempChar = fgetc(InHex);
	        if(i==0) Length = ((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) << 4;
	        if(i==1) Length = ((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) + Length;
        }
        for(i=0;i<4;i++)
        {
          TempChar = fgetc(InHex);
	        if(i==0) Addr = ((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) << 12;
	        if(i==1) Addr = (((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) << 8) + Addr;
	        if(i==2) Addr = (((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) << 4) + Addr;
	        if(i==3) Addr = ((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) + Addr;
        }

        fgetc(InHex);
        fgetc(InHex);

        for(i=0;i<Length;i++)
        {
          sub1 = Addr && 0xfffffffc;
          sub2 = Addr && 0x00000003;
          Data32[sub1].Swich = 1;
          Data32[sub1].Data8[sub2].Addr = Addr;
          TempChar = fgetc(InHex);
          Data32[sub1].Data8[sub2].Data = ((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30) << 4;
          Data32[sub1].Data8[sub2].Data = ((int)TempChar > 0x39 ? (int)TempChar - 0x37 : (int)TempChar - 0x30);
        }
      }
    }
}
  for(i=0;i<SIZE;i++) fprintf(OutTxt32,"@%d  %d%d%d%d",Data32[i].Addr,Data32[i].Data8[0].Data,Data32[i].Data8[1].Data,Data32[i].Data8[2].Data,Data32[i].Data8[3].Data);

  fclose(InHex);
  fclose(OutTxt32);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?