将一个int整形数组 转换成 char数组 ,求高手

ghd2000 2011-03-24 10:26:26
将一个int整形数组 转换成 char数组 ,求高手!
...全文
2095 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanqi0323 2011-08-24
  • 打赏
  • 举报
回复
//此函数添加时间为2011-8-24
//将Short数组转换为Char数组 ---ShortToChar(通过位移的方式)
/*
输入条件为 Short数组 Short数组长度 Char数组 Char数组长度
&m_Short m_ShortLen &m_Char m_CharLen

输出结果为 TRUE 转换成功 FALSE 转换失败
*/
//bool ADO::ShortToChar(short (&m_Short)[2048],int m_ShortLen,unsigned char ( &m_Char )[4096],int m_CharLen)
bool ADO::ShortToChar(short *m_Short,int m_ShortLen,unsigned char ( &m_Char )[4096],int m_CharLen)
{
//判断数组长度是否匹配
if ( m_CharLen<2*m_ShortLen )
{
AfxMessageBox("数组长度不匹配!");
return false;
}
//通过位移的方式进行数组转换
for (int i = 0, j = 0; i < m_ShortLen; ++i)
{
m_Char[j++] = m_Short[i] >> 8;
m_Char[j++] = (m_Short[i]);
}

return true;
}
赵4老师 2011-03-24
  • 打赏
  • 举报
回复
举例来说你这个问题现在我能想到的就有以下几种理解:
int I[2]={1,2};
·char C[2]={1,2};
·char C[4]={1,0,2,0};
·char C[3]="12";
·char C[4]="1,2";
……
到底是哪种呢?
masmaster 2011-03-24
  • 打赏
  • 举报
回复 1
做过的练习,将以整数转换成字符串


void intToStr (int n,char str[]) {

int i=0,j,len,m=n;
char tmp;
if(n<0) {
str[0]='-';
str[1]='\0';
i++;
n=-n;
}

do {
str[i]=(n%10+0x30);
n/=10;
i++;
}while(n!=0);
str[i]='\0';

len=i;

if(m<0) {
i=1;
}else{
i=0;
}

for(j=len-1;i<len/2;i++,j--) {
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}

}
c_losed 2011-03-24
  • 打赏
  • 举报
回复
2个嵌套for循环
itoa 库函数
dxms8 2011-03-24
  • 打赏
  • 举报
回复
要赋值的话用memcpy
只要读取的话直接强转成char*就可以了吧
svtanto 2011-03-24
  • 打赏
  • 举报
回复
假设整数4个字节,字符1个字节
那么每次移8位,然后保存到一个char 型的 buffer就可以了
int k = 41424344;
char ck1 = (k << 24) >> 24;
char ck2 = (k << 16) >> 24;
char ck3 = (k << 8) >> 24;
char ck4 = k >> 24;
masmaster 2011-03-24
  • 打赏
  • 举报
回复
笨人菜鸟,代码粗糙,仅供参考!


root@~ #cat int2str.c
#include <stdio.h>
#define N 3
struct string {
char str[10];
};

int main (void) {

struct string chstr[N];
int num[N],i;
char temp[10];
void intToStr (int n,char str[]);//convert ingeter to char-string
void strcp (char s1[],char s2[]);//copy char-string

printf ("Enter a digit array:\n");

//Get a integer array
for(i=0;i<N;i++) {
scanf ("%i",&num[i]);
}

//Traversal integer array,and convert digit to character array
for(i=0;i<N;i++) {
intToStr(num[i],temp);
strcp(temp,chstr[i].str);
}

//Display character array in struct.
printf ("Converted ...\n");

for(i=0;i<N;i++) {
printf ("%s ",chstr[i].str);
}

printf ("\n");

return 0;

}

void strcp (char s1[],char s2[]) {
int i=0;
while(s1[i]!='\0') {
s2[i]=s1[i];
i++;
}
s2[i]='\0';
}

void intToStr (int n,char str[]) {

int i=0,j,len,m=n;
char tmp;
if(n<0) {
str[0]='-';
str[1]='\0';
i++;
n=-n;
}
do {
str[i]=(n%10+0x30);
n/=10;
i++;
}while(n!=0);
str[i]='\0';

len=i;

if(m<0) {
i=1;
}else{
i=0;
}
for(j=len-1;i<len/2;i++,j--) {
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}
}
root@~ #


测试:

root@~ #./int2str
Enter a digit array:
1234 2345 1234567890
Converted ...
1234 2345 1234567890
root@~ #
penguinzz 2011-03-24
  • 打赏
  • 举报
回复
不太清楚 啊
lx3275852 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ghd2000 的回复:]

int I[2]={1,2}
char c[2]={1,2}

用C语言来转换
[/Quote]


int a[2] = {1, 2};
char c[2];
for( int i = 0; i < 2; i++ ) c[i] = a[i];
ineedpower 2011-03-24
  • 打赏
  • 举报
回复
如果整形数组中个某个超出了字符的范围,你想怎么处理?比如100000000000
ghd2000 2011-03-24
  • 打赏
  • 举报
回复
int I[2]={1,2}
char c[2]={1,2}

用C语言来转换

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧