问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样把char型数组转存为int型数组?

发布网友 发布时间:2022-04-24 00:23

我来回答

3个回答

热心网友 时间:2023-10-15 08:50

#include <stdio.h>
#include <string.h>
typedef unsigned char uchar;
typedef unsigned int  uint;
//转换函数
//Temp 字符型数组
//pOut int型数组
//length 字符型数组的长度
//这里假设字符型数组里包含的都是偶数个元素
//如果是奇数个数,则需要增加如下处理:
//检查length是否是奇数,如果是,动态分配length+1个char大小的数组
//数据全部清零,并且把Temp的内容拷贝到动态分配的数组中
//按照下面长度是偶数的情况处理
//释放动态分配的内存
//这里根据问题要求,应该是以小端序来存放int类型的
//如果更智能一些,可以写一个检查字节序的函数来处理
void Exchange(const uchar *Temp, uint *pOut, uchar length)
{
    int i = 0;
    for (; i < length / 2; i++)
    {
        //小端序,直接按原来的顺序拷贝过去
        //如果是大端序,则可以改变一下字节序
        memcpy(pOut, Temp, 2);
        pOut++;//int型指针后移一位
        Temp+=2;//字符型字节后移两位    
    }
}
//测试代码
int main(void)
{
    int i;
    uint array[20] = {0};
    uchar Start[] = {0x80,0xF1,0x58,0x03,0xC1,0xEA,0x8F,0x06};
    Exchange(Start, array, sizeof(Start));
    for (i = 0; i < 20; i++)
    {
        if (array[i] != 0)
        {
            printf("0x%04X ", array[i]);
        }        
    }    
    printf("\n");
    return 0;
}

输出截图:

热心网友 时间:2023-10-15 08:51

其实可以不转换,用指针访问即可,比如你的例子:
short int *array=(short int *)Start;
则printf("%x %x %x %x\n",array[0],array[1],array[2],array[3]);得到的结果就是
F180 0358 EAC1 068F

热心网友 时间:2023-10-15 08:51

void Exchange(uchar *Temp, uchar length, uint *pout)
{
int i;
uchar *p;
p = (uchar*)pout;

for (i = 0; i < length; i++)
{
p[i] = Temp[i];
}
//memcpy(pout, Temp, length); //效率更高

//必须考虑 length 为奇数时的情况
if (length % 2)
p[i] = 0;
}

热心网友 时间:2023-10-15 08:50

#include <stdio.h>
#include <string.h>
typedef unsigned char uchar;
typedef unsigned int  uint;
//转换函数
//Temp 字符型数组
//pOut int型数组
//length 字符型数组的长度
//这里假设字符型数组里包含的都是偶数个元素
//如果是奇数个数,则需要增加如下处理:
//检查length是否是奇数,如果是,动态分配length+1个char大小的数组
//数据全部清零,并且把Temp的内容拷贝到动态分配的数组中
//按照下面长度是偶数的情况处理
//释放动态分配的内存
//这里根据问题要求,应该是以小端序来存放int类型的
//如果更智能一些,可以写一个检查字节序的函数来处理
void Exchange(const uchar *Temp, uint *pOut, uchar length)
{
    int i = 0;
    for (; i < length / 2; i++)
    {
        //小端序,直接按原来的顺序拷贝过去
        //如果是大端序,则可以改变一下字节序
        memcpy(pOut, Temp, 2);
        pOut++;//int型指针后移一位
        Temp+=2;//字符型字节后移两位    
    }
}
//测试代码
int main(void)
{
    int i;
    uint array[20] = {0};
    uchar Start[] = {0x80,0xF1,0x58,0x03,0xC1,0xEA,0x8F,0x06};
    Exchange(Start, array, sizeof(Start));
    for (i = 0; i < 20; i++)
    {
        if (array[i] != 0)
        {
            printf("0x%04X ", array[i]);
        }        
    }    
    printf("\n");
    return 0;
}

输出截图:

热心网友 时间:2023-10-15 08:51

其实可以不转换,用指针访问即可,比如你的例子:
short int *array=(short int *)Start;
则printf("%x %x %x %x\n",array[0],array[1],array[2],array[3]);得到的结果就是
F180 0358 EAC1 068F

热心网友 时间:2023-10-15 08:51

void Exchange(uchar *Temp, uchar length, uint *pout)
{
int i;
uchar *p;
p = (uchar*)pout;

for (i = 0; i < length; i++)
{
p[i] = Temp[i];
}
//memcpy(pout, Temp, length); //效率更高

//必须考虑 length 为奇数时的情况
if (length % 2)
p[i] = 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
轻松搞定高中数学:三角函数内容简介 为什么我的红米手机系统升级了之后不可以用USB连接电脑了? 龙翔路小区30号院交通方便吗?应该怎么过去? 从北京西到龙翔路怎么走 从北京南站到北京云彩快捷酒店,如何坐地铁,有熟悉的朋友麻烦给个路线... 家里柜子如何验收 男人穿高跟鞋怎么样 监理如何验收衣柜 定制衣柜安装方法及验收标准 定制衣柜安装方法及验收标准规范 定制衣柜如何验收 c++中字符串数组转化成int型数组 如何把字符串数组转换成int数组 为什么超临界流体萃取能选择性的提取非极性和弱极性物质 超临界流体提取法的基本原理 微信公众平台如何推送多条消息 超临界萃取的概述 电风扇五叶和九叶哪个好? 超临界流体提取法适用于哪类成分的提取? 清代诗人仿李商隐的无题诗,题目叫什么? 有个&quot;绮&quot;字 微信公众账号推送信息点击率怎么刷 超临界流体萃取的优点 什么叫采用超临界萃取技术? 生活中有哪些处理已生锈东西的办法呢? ”绮”在香港念 yi 吗? 微信公众平台消息如何推送 衣服上面有白毛如何去除? 超临界流体萃取的临界流体 不锈钢碗长白毛怎么办? 超临界co2萃取技术的特点,可用于哪些成分的提取 微信营销之微信公众号怎样进行营销消息推送的要 C语言中,字符串怎么转换为int数组? java怎么把字符型数组转换为int型 如何把字符串二维数组转化成int二维数组? 如何将String i = &quot;1,2,3,4,5,6,7,8,9,0&quot;;转成int类型数组 java怎么把字符型数组转换为int型? java中把String类型数组转换成int型数组怎么做? C语言字符串转成INT型数组 Java语言中,如何将String转化成Int数组 c#怎么把字符串数组转化成int数组 java里,如何把String字符串转换成int[]数组? java怎么把字符串转换为int数组 java string数组转int数组怎么转,求解 怎么将字符串类型转换成int型?初学者简单方法 C++中怎样把一个字符串数组中的数 转换成整形 数据 如:string s=“1234” 然后转换成int n=1234 我微信里面收藏了一个符号,不知道是不是隐身符,那微信隐身符是什么样的? 微信最新隐身符号代码有谁知道? 微信类似 &#x0E53;&#x0E08;&#x0E38;&#x0E4A;&#x0E1A;&#x2005;这种掉表情的符号,都有什么,推荐几... 我的微信为什么来了信息不显示微信符号了 为什么我的手机上来微信信息没有微信显示符号 微信隐身符号进群无记录,他们是怎么把符号写入微信名的用的什么方法,还有制作隐身号需要什么要求