将int转换成char

jxtquber 2007-07-18 09:18:20
int占四个字节,我定义一个char[8],然后想把int转换成char,比如
int i = 1879048193;转换成16进制是0x70000001,转换成char后,
char* cStr = 70000001,我用iota函数转换的话占了我8个字节,并且都是以asscall码存放的!难道只能手工写一个?
...全文
2027 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
soulfamas 2009-09-20
  • 打赏
  • 举报
回复
564
jxtquber 2007-07-19
  • 打赏
  • 举报
回复
呵呵,就是楼上的意思!
wzcwater 2007-07-19
  • 打赏
  • 举报
回复
比如:
a[0] = 1879048193 & 0XFF000000; // 或者m >>24 & 0xFF
..
..
a[3] = 1879048193 & 0xFF;
写个小函数, 要是用#define的,速度较快
jxtquber 2007-07-18
  • 打赏
  • 举报
回复
看样子需要手工写一个了,需求其实很简单
int i = 1879048193,16进制是0x70000001,我想用四个字节的字节流来表示这个int类型,比如我放在内存地址为0x00000001的地方,这样,从地址0x00000001到0x00000004的地址存放的数据应该为:70 00 00 01
jxtquber 2007-07-18
  • 打赏
  • 举报
回复
看样子需要手工写一个了,需求其实很简单
int i = 1879048193,16进制是0x70000001,我想用四个字节的字节流来表示这个int类型,比如我放在内存地址为0x00000001的地方,这样,从地址0x00000001到0x00000004的地址存放的数据应该为:70 00 00 01
binjuny 2007-07-18
  • 打赏
  • 举报
回复
转换是需要自己写一个函数的
binjuny 2007-07-18
  • 打赏
  • 举报
回复
freshui说的好像有一点不对,byte 型的定义应该是typedef unsigned char byte ,范围是0-255之间
char的范围是-128 -- 127之间
星羽 2007-07-18
  • 打赏
  • 举报
回复
int i = 1879048193;

char ch[8];
itoa(i, ch, 16);
freshui 2007-07-18
  • 打赏
  • 举报
回复
这不就是了啊?
char的意思是字符, 一般就是要取ascii码

如果你要当整数写的话, 一般我们不叫char型, 叫 byte
你可以
typedef char byte

这样别人看你代码就只到你想要干吗的了

然后用 byte b[8], 手动写一个函数转换, 或者用itoa的结果, 再每个减去一个'0'即可
我啃 2007-07-18
  • 打赏
  • 举报
回复
无法理解您高深的要求~
jxlczjp77 2007-07-18
  • 打赏
  • 举报
回复
好像看懂了搂主的意思,是不是这样

int m=1879048193;
char a[8];
char* p=(char*)&m;

int size_int=sizeof(int);
for (int i=0;i<size_int;i++)
{
a[size_int-i-1]=p[i];
}

a[0]=0x70
a[1]=0x00
a[2]=0x00
a[3]=0x01
jxlczjp77 2007-07-18
  • 打赏
  • 举报
回复
你到底要搞什么哟:

char* cStr="70000001";//到底是不是你忘了写引号??
//是转成字符串"70000001"还是什么??
如果不是转成字符串,还这么麻烦干嘛??


int i = 1879048193;
char ch[8];

*((int*)a)=i;不就得了
KenYuan2016 2007-07-18
  • 打赏
  • 举报
回复
char buf[8] = {0};
int i = 1879048193;
memcpy(buf, &i, sizeof(i));

把int i里面的东西,原封不懂的搬到buf中,占buf的低位开始的4个字节,高位空着
KenYuan2016 2007-07-18
  • 打赏
  • 举报
回复
int 占4个 char 也占4个 ?
menmory copy 啊
memcpy()...
KenYuan2016 2007-07-18
  • 打赏
  • 举报
回复
你什么意思啊?
转换成16进制是0x70000001,转换成char后,
char* cStr = 70000001, //是啊,是以ascii码存放的, 有啥问题吗?
darkarthur 2007-07-18
  • 打赏
  • 举报
回复
int i = 1879048193;
你不是说你的编译器"int占四个字节"吗?
那怎么可以定义到这么大........
taodm 2007-07-18
  • 打赏
  • 举报
回复
呃,char buf[4];
int i = 1879048193;
int tmp = htonl(i);
memcpy(buf, (char *)&tmp, sizoef(tmp));
jxtquber 2007-07-18
  • 打赏
  • 举报
回复
没有人回了哦?

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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