久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1927|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

十六進(jìn)制數(shù)據(jù)改寫為C語言數(shù)組形式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:998802 發(fā)表于 2022-10-13 10:58 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
/*
十六進(jìn)制數(shù)據(jù)改寫為C語言數(shù)組形式
如:
0111
022222
03333333
生成:
{0x01,0x11},
{0x02,0x22,0x22},
{0x03,0x33,0x33,0x33},

如果第一個數(shù)為數(shù)據(jù)長度信息,第二個數(shù)為地址,其他為數(shù)據(jù)
如:
0111
022222
03333333
生成:
{0x01,0x01,0x11},
{0x02,0x02,0x22,0x22},
{0x03,0x03,0x33,0x33,0x33},

*/

#include <stdio.h>
#include <string.h>

int main(void)
{
        FILE *fp = NULL;
        int count = 0;
        int num = 0;
        int num2 = 0;
        int num3 = 0;
        int num4 = 0;
        char buf[16000] = {}; //存儲原來的數(shù)據(jù)
        char buf2[16000] = {}; //原來的數(shù)據(jù)加上每行的數(shù)據(jù)個數(shù)
        char result[16000] = {}; //改寫為C語言數(shù)組形式。
        fp = fopen("str.txt", "r");
        if  (fp == NULL) {     
                printf("open str.txt err!\n");
                return -1;
        }

        count = fread(buf, sizeof(char), sizeof(buf), fp);
        printf("read %d bytes\n", count);
        if (count < 0) {
                printf("read err!\n");
                return -1;
        }
        fclose(fp);
/* 每行前面兩個數(shù)據(jù)為該行有效16進(jìn)制數(shù)據(jù)的長度,不需要長度信息,可以把下面這段屏蔽掉 */
#if 1
        num2 += 2;
        num3 = 0;
        while(num < count) {
                while(buf[num] != '\n') {
                        buf2[num2] = buf[num];
                        num2++;
                        num++;
                }
                if (buf[num] == '\n') {
                        buf2[num2] = buf[num];
                        num4 = (num2 - num3 - 1) / 2 - 1;
                        if (num4 / 16 >= 10)
                                buf2[num3] = num4 / 16 % 10 + 'A';
                        else
                                buf2[num3] = num4 / 16 + '0';

                        if (num4 % 16 >= 10)
                                buf2[num3+1] = num4 % 16 % 10 + 'A';
                        else
                                buf2[num3+1] = num4 % 16 + '0';

                        printf("num=%d, num2=%d, num3=%d, num4=%d\n", num, num2, num3, num4);
                        num3 = num2 + 1;
                        num2 += 3;
                        num++;
                }
        }
        memset(buf, 0, sizeof(buf));
        memcpy(buf, buf2, sizeof(buf));
        printf("buf = %s\n", buf);
        count = num2;
        num = 0;
        num2 = 0;
        num3 = 0;
        num4 = 0;
#endif

        result[0] = '{';
        result[1] = '0';
        result[2] = 'x';
        num2 = 3;
        while (num < count) {
                num3++;
                if (buf[num] == '\n') {
                        num3 = 0;
                        result[num2++] = '}';
                        result[num2++] = ',';
                        result[num2++] = buf[num];
                        result[num2++] = '{';
                        result[num2++] = '0';
                        result[num2++] = 'x';
                        num++;
                        continue;
                }
                if (num3 <= 2) {
                        result[num2++] = buf[num];
                }
                if (num3 == 2) {
                        if (buf[num+1] != '\n') {
                                result[num2++] = ',';
                                result[num2++] = '0';
                                result[num2++] = 'x';
                        }
                        num3 = 0;
                }
                num++;
        }
        fp = fopen("result.txt", "w+");
        if  (fp == NULL) {     
                printf("open result.txt err!\n");
                return -1;
        }
        count = fwrite(result, 1, num2+1, fp);
        printf("write %d bytes\n", count);
        if (count < 0) {
                printf("write result.txt err!\n");
                return -1;
        }
        fclose(fp);
        return 0;
}

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 尤物在线视频 | 日韩欧美在线观看视频 | 午夜99| 日韩中文在线视频 | 黄色成人在线 | 成人av鲁丝片一区二区小说 | 午夜码电影 | 91久久综合亚洲鲁鲁五月天 | 久久99国产精品久久99果冻传媒 | 亚洲精品日韩一区二区电影 | 搞av.com| 国产一级片在线观看视频 | 国精日本亚洲欧州国产中文久久 | 欧美xxxx色视频在线观看免费 | 久久久久久亚洲 | 色伊人 | 国产三级精品三级在线观看四季网 | 成人免费视频网站在线看 | 男女免费网站 | 国产成人网 | 羞羞视频免费观看 | 91精品国产欧美一区二区成人 | 久久久国产一区二区三区 | 亚洲精品一区二三区不卡 | 不卡的av电影 | 青青久久久 | 在线午夜电影 | 中文字幕亚洲视频 | 国产一区二区三区免费 | 色悠悠久| 91精品国产91久久综合桃花 | 综合二区 | 97精品国产97久久久久久免费 | 一区二区三区在线免费观看 | 国产精品久久久久久久久久妇女 | 成人在线精品视频 | 国产精品一区二区三区四区 | 国产精品久久久久无码av | 中文字幕亚洲精品 | 日本精品视频在线 | 激情视频网站 |