求一段将long类型数据转换为字符串的经典函数

doublesword 2004-03-16 06:03:33
要求:
将long类型数据按字节存到一个字符串从指定位置的连续4个单元中。
比如
将 9×256×256×256 + 154×256×256 + 87×256 +56 存到字符串temp的第5个单元开始的连续4个单元中
也就是存贮以后的结果是这样的:

temp[4] = 9;
temp[5] = 154;
temp[4] = 87;
temp[4] = 56;
...全文
188 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liao2001 2004-03-17
  • 打赏
  • 举报
回复
不要动不动就来什么经典
oyd 2004-03-17
  • 打赏
  • 举报
回复
没意思
ymbymb 2004-03-17
  • 打赏
  • 举报
回复
如果用函数的话:
void change(long data, char *pBuf, int pos)
{
for(int i = 0; i < 4; i++)
{
pBuf[i + pos] = (data >> (24 - i * 8)) & 0xff;
}
}
ymbymb 2004-03-17
  • 打赏
  • 举报
回复
太简单了
long data = 9×256×256×256 + 154×256×256 + 87×256 +56;
for(int i = 0; i < 3; i++)
{
temp[i + 4] = (data >> (24 - i * 8)) & 0xff;
}
doublesword 2004-03-17
  • 打赏
  • 举报
回复
其实这也是我去面试的一道题,我觉得挺有实际意义,真的要写好这个函数,其实也不简单。不要小看哦:)
doublesword 2004-03-16
  • 打赏
  • 举报
回复
请大家严格地按照函数的写法,把函数的参数和返回值都写清楚,我想这里,插入到字符串的什么位置应该是有一个参数来表示的。
newegg2002 2004-03-16
  • 打赏
  • 举报
回复
有点不大明白..
想一想
代码之诗 2004-03-16
  • 打赏
  • 举报
回复
flyingbugs(网际.神经病.心情很遭)

说得是。在 INTEL 的CPU上是不对的。不过这样的话就得考虑不同平台的情况了……那就还有long 到底是多少位的问题了。
想着想着脑袋就破了,白白的浆糊流了一地! :)
flyingbugs 2004-03-16
  • 打赏
  • 举报
回复
Hotman_x(小人) :
你的不对
没有考虑字节序的问题
yuanlei1978113 2004-03-16
  • 打赏
  • 举报
回复
char buf[100];
sprintf(buf, "%ld", longNumber);
代码之诗 2004-03-16
  • 打赏
  • 举报
回复
难道是……如果我理解没错,未免有点太简单了。

void Long2Char(long l, char c[])
{
memcpy(c, (void*)(&l), sizeof(long));
}
sharkhuang 2004-03-16
  • 打赏
  • 举报
回复
itoa
flyingbugs 2004-03-16
  • 打赏
  • 举报
回复
str2[sizeof(long)-i-1] = (unsigned char)(src>>8*i);
让强制转换自己来截取。
flyingbugs 2004-03-16
  • 打赏
  • 举报
回复
void long2str( long src, char * str )
{
int i;
unsigned char * str2=str;

for(i=0; i<sizeof(long); i++)
{
str2[sizeof(long)-i-1] = (unsigned char)(src>>8*i);
}
}
flyingbugs 2004-03-16
  • 打赏
  • 举报
回复
没看懂什么意思
Quain 2004-03-16
  • 打赏
  • 举报
回复
temp[4]=(char)((9×256×256×256 + 154×256×256 + 87×256 +56)/256*256*256);
是这个意思吗?
剩下的以此类推
doublesword 2004-03-16
  • 打赏
  • 举报
回复
要求:
将long类型数据按字节存到一个字符串从指定位置的连续4个单元中。
比如
将 9×256×256×256 + 154×256×256 + 87×256 +56 存到字符串temp的第5个单元开始的连续4个单元中
也就是存贮以后的结果是这样的:

temp[4] = 9;
temp[5] = 154;
temp[6] = 87;
temp[7] = 56;

69,373

社区成员

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

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