C高手请进,急,在线等

zlaxr8888 2008-12-23 09:29:00
用c写一段代码,把十六进制0x0001转换成字符串输出,并且每次输出这个十六进制数,可以加一输出 。
要去不用c的函数库。谢谢,急!!!!!
...全文
136 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbh2001 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lbh2001 的回复:]
这样行不行

C/C++ code
#include <stdio.h>

int main(void)
{
int mystr = 0x0001;
char temp[5];

temp[0] = ((mystr >> 24) & 0x000000FF) + 0x30;
temp[1] = ((mystr >> 16) & 0x000000FF) + 0x30;
temp[2] = ((mystr >> 8) & 0x000000FF) + 0x30;
temp[3] = ((mystr >> 0) & 0x000000FF) + 0x30;
temp[4] = '\0';
printf("0x%s\n", temp);


return 0;
}
[/Quote]
忘了考虑字母了
james_1010 2008-12-23
  • 打赏
  • 举报
回复
汇编?
zlaxr8888 2008-12-23
  • 打赏
  • 举报
回复
谢谢了,哥们!!!
fibbery 2008-12-23
  • 打赏
  • 举报
回复
如果输入是整数,那么就无所谓十六进制还是什么,对于整数来说,计算机就是使用几个字节或者说多少位来表示而已;
我们所说的几进制只是将整数以什么样的格式输出。

lbh2001 2008-12-23
  • 打赏
  • 举报
回复
这样行不行

#include <stdio.h>

int main(void)
{
int mystr = 0x0001;
char temp[5];

temp[0] = ((mystr >> 24) & 0x000000FF) + 0x30;
temp[1] = ((mystr >> 16) & 0x000000FF) + 0x30;
temp[2] = ((mystr >> 8) & 0x000000FF) + 0x30;
temp[3] = ((mystr >> 0) & 0x000000FF) + 0x30;
temp[4] = '\0';
printf("0x%s\n", temp);


return 0;
}
星羽 2008-12-23
  • 打赏
  • 举报
回复
unsigned int val_max = 0xffff;

这个是输出的最大范围,改成你想要的就是了
星羽 2008-12-23
  • 打赏
  • 举报
回复

#include "stdlib.h"

void to_string(char str[], unsigned short val, int radix)
{
char* p = str;
char* f = str;

int i = 0;
int j = 0;

if (radix == 16)
{
strcpy(str, "0x");
p = str + 2;
f = str + 2;
}

do {
int digval = (unsigned int)(val % radix);
val /= radix;

if (digval > 9)
*p++ = (char)(digval - 10 + 'A');
else
*p++ = (char)(digval + '0');
} while (val > 0);

j = 4 - (p - f);

while (i++ < j)
*p++ = '0';


*p-- = 0;

do {
char* temp = *p;
*p = *f;
*f = temp;
--p;
++f;
} while (f < p);
}

int main()
{
unsigned int val = 0x0001;
unsigned int val_max = 0xffff;
char str[32];

while (val <= val_max)
{
to_string(str, val, 16);
printf("%s\n", str);

++val;
}

return 0;
}

------

0x0001
0x0002
0x0003
0x0004
0x0005
0x0006
0x0007
0x0008
0x0009
0x000A
0x000B
0x000C
0x000D
0x000E
0x000F
0x0010
0x0011
0x0012
0x0013
0x0014
0x0015
0x0016
0x0017
0x0018
0x0019
0x001A
0x001B
0x001C
0x001D
0x001E
0x001F
0x0020
0x0021
0x0022
0x0023
0x0024
0x0025
0x0026
0x0027
0x0028
0x0029

XPR 2008-12-23
  • 打赏
  • 举报
回复
用sprintf是正解
zlaxr8888 2008-12-23
  • 打赏
  • 举报
回复
帮帮啊
云梦谭 2008-12-23
  • 打赏
  • 举报
回复
那就参考一下库函数的实现。
zlaxr8888 2008-12-23
  • 打赏
  • 举报
回复
是的,就是写库函数sprintf的功能,大家帮帮忙!!!
wyswyg63 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyu637 的回复:]
int main(){
int mystr = 0x0001;
char temp[10];
sprintf(temp , "%04x" , mystr);

printf("%s",temp);
}
[/Quote]
估计lz想自己写代码实现ls库函数sprintf的功能吧
lbh2001 2008-12-23
  • 打赏
  • 举报
回复
不用c的函数库???---->那输出用什么来输出呢
lala9517 2008-12-23
  • 打赏
  • 举报
回复
你说的啥?
wuyu637 2008-12-23
  • 打赏
  • 举报
回复
int main(){
int mystr = 0x0001;
char temp[10];
sprintf(temp , "%04x" , mystr);

printf("%s",temp);
}
zlaxr8888 2008-12-23
  • 打赏
  • 举报
回复
我这个是往硬件上写的,不能调用,c的库函数。大家帮帮忙,着急!!!
wuyu637 2008-12-23
  • 打赏
  • 举报
回复

sprintf
OenAuth.Core 2008-12-23
  • 打赏
  • 举报
回复
不懂LZ的意思。顶起
xiaozhiwei 2008-12-23
  • 打赏
  • 举报
回复
什么意思 ?

70,035

社区成员

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

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