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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2004|回復: 13
收起左側

如何把0x20015ca8這個數轉化為C語言數組?

[復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
ID:1043477 發表于 2022-10-12 09:48 | 顯示全部樓層 |閱讀模式
能不能把這個數轉化為a[len]={a,b,c,d,e,f.........l,m,n................}這種形式,長度不限,都可以的。

回復

使用道具 舉報

ID:1034262 發表于 2022-10-12 10:54 | 顯示全部樓層
一個整型數,你是要拆分幾個字節放數組里?
回復

使用道具 舉報

ID:123289 發表于 2022-10-12 11:06 | 顯示全部樓層
先按你的想法建立一個數組。
再將0x20015ca8按你的想法拆解開來。
最后放入你建立的數組中。
回復

使用道具 舉報

ID:401564 發表于 2022-10-12 14:11 | 顯示全部樓層
你還不如說你要干嘛,直接問問題本身
而不是想當然的覺得,一個問題應該要"這樣"解決,然后就問怎么做
0x20015ca8是一個數
數組是一堆數
這兩者之間沒有等號關系,或者是說一點關系都沒有,那要怎么轉換呢?
100塊錢你要換一堆錢,你總得說是要五毛的還是一塊的吧?
回復

使用道具 舉報

ID:824490 發表于 2022-10-12 15:46 | 顯示全部樓層
unsigned int arr16[2];        雙字節數組
unsigned char arr8[4];單字節數組
unsigned char arr4[8];半字節數組
void main()
{         
unsigned long num;
unsigned char i;

num=0x20015ca8;       
for(i=0;i<2;i++)
{
arr16[1-i]=(int)num ;
num>>=16;
}       
       
num=0x20015ca8;       
for(i=0;i<4;i++)
{
arr8[3-i]=(char)num ;
num>>=8;
}       

num=0x20015ca8;
for(i=0;i<8;i++)
{
arr4[7-i]=(char)num&0x0f;
num>>=4;
}       
        while(1);
}

回復

使用道具 舉報

ID:824490 發表于 2022-10-12 15:47 | 顯示全部樓層
就這么簡單。
回復

使用道具 舉報

ID:729982 發表于 2022-10-12 16:59 | 顯示全部樓層
我按照你的字面意思來理解,你是想把0x20015ca8,轉換成{0x20,0x01,0x5c......}這種的對嗎,你用先按位與,再位移的辦法就行。0xAABB>>8得到0xAA,0xAABB&0xFF得到0xBB,更長的也是同理的
回復

使用道具 舉報

ID:883242 發表于 2022-10-12 19:51 | 顯示全部樓層
樓主另一個帖子已經說明了是想把這個數拆成字節經由iic收發,把地址賦值給一個字符指針char*,然后操作這個指針就行了。位移運算是沒有必要的,也浪費時間。
回復

使用道具 舉報

ID:729982 發表于 2022-10-13 07:58 | 顯示全部樓層
我以為他是想轉化出一個數組,不知道后續還要干什么
回復

使用道具 舉報

ID:526108 發表于 2022-10-13 08:49 | 顯示全部樓層
本來就是數組,何必要去拆分呢
long num=0x20015ca8;
char*str=&num;
char a=str[0];
回復

使用道具 舉報

ID:526108 發表于 2022-10-13 08:53 | 顯示全部樓層
更直接的操作
long num=0x20015ca8;
char a=((char*)num)[1];
回復

使用道具 舉報

ID:526108 發表于 2022-10-13 09:05 | 顯示全部樓層
結構體用法
union str{
long num;
char c_num[4];
}
num n;
n.num=0x20015ca8;
char a=n.c_num[0];
回復

使用道具 舉報

ID:526108 發表于 2022-10-13 09:29 | 顯示全部樓層
qq624353765 發表于 2022-10-13 08:53
更直接的操作
long num=0x20015ca8;
char a=((char*)num)[1];

有個小錯誤
char a=((char*)&num)[1];
回復

使用道具 舉報

ID:998802 發表于 2022-10-13 10:55 | 顯示全部樓層
/*
十六進制數據改寫為C語言數組形式
如:
0111
022222
03333333
生成:
{0x01,0x11},
{0x02,0x22,0x22},
{0x03,0x33,0x33,0x33},

如果第一個數為數據長度信息,第二個數為地址,其他為數據
如:
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] = {}; //存儲原來的數據
        char buf2[16000] = {}; //原來的數據加上每行的數據個數
        char result[16000] = {}; //改寫為C語言數組形式。
        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);
/* 每行前面兩個數據為該行有效16進制數據的長度,不需要長度信息,可以把下面這段屏蔽掉 */
#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;
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品无码一区二区三区 | 成人在线免费观看av | 久久精品一 | 成人中文字幕在线观看 | 精品啪啪 | 91精品国产手机 | 狠狠干网| 国产午夜精品一区二区三区 | 国产精品久久影院 | 国产亚韩 | 免费观看一区二区三区毛片 | 91精品中文字幕一区二区三区 | 一区二区免费在线 | 一区二区三区高清 | 欧美精品欧美精品系列 | 欧美在线视频一区二区 | 亚洲精品乱码久久久久久9色 | 免费人成激情视频在线观看冫 | 亚洲欧美日韩在线不卡 | 色婷婷国产精品综合在线观看 | 国产精品久久久久久亚洲调教 | 国产综合精品一区二区三区 | 91免费小视频 | 精品久久国产 | 精品在线播放 | caoporn地址| 亚洲精品欧美精品 | 亚洲国产精品99久久久久久久久 | 色妹子综合网 | 国产精品久久欧美久久一区 | 亚洲成人综合社区 | 黄色免费av | 国产精品69av | 国产精久久久久久久妇剪断 | 亚洲免费一区 | 久草青青草 | 狠狠色综合久久婷婷 | 成人av鲁丝片一区二区小说 | 日本在线精品视频 | 日韩成人精品在线 | 国产中文字幕在线观看 |