怎样将二进制转换成字符串?在线等待。。。
要求用c来写,有没有现成的方法,我查了一下MSDN,没有找到。 问题点数:50、回复次数:13Top
1 楼xuying()回复于 2002-05-31 15:34:34 得分 0
假设你的二进制数存在int i中。
char buf[1024];
int i;
sprintf(buf, "%d", i);Top
2 楼pangdola(Seeman)回复于 2002-05-31 15:42:26 得分 0
使用ecvt()函数
该函数原型在stdlib.h中
调用方式:char *ecvt(double value,int ndigit,int *dec,int *sign)
它是将value转换成长度为ndigit的字符串。调用该函数后,由dec所指向的变量值表示小数点的位置。如果小数点在数的左边,则由dec所指向的数为负;如果由sign所指向的变量为负,则该数为负数。
函数ecvt()返回指向保存该数值的字符串的静态数据区的指针。Top
3 楼steedhorse(晨星)回复于 2002-05-31 15:51:36 得分 5
你的意思是把整数10转换成字符串“1010”吗?
自己些个函数不就行了?
void IntToBStr(int n , char* str)
{
int dev = n;
int i = 0;
char c;
int len;
//开始依次除1取余,直到商为0
while(dev)
{
str[i++] = '0' + (dev % 2);
dev /= 2;
}
str[i] = '\0';
//别忘了结果要倒过来。
len = strlen(str);
for(i = 0 ; i < len / 2 ; i++)
{
c = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = c;
}
}
没有调试,我想思路应该没有问题。Top
4 楼steedhorse(晨星)回复于 2002-05-31 15:53:52 得分 0
sorry,第一个注视错了,应该是“除2取余”
Top
5 楼spark_li(晕忽忽(恶人谷:通讯连长))回复于 2002-05-31 16:06:37 得分 0
帖主的问题说得有些模糊,
不知所云也。。。Top
6 楼terron(注定编程一生)回复于 2002-05-31 16:07:35 得分 5
上msdn 看看itoa函数的用法,就有你要的东东
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}
看来还是不怎么会用msdn阿,很好用的,呵呵!!Top
7 楼bowlder(玩石)回复于 2002-05-31 16:12:13 得分 0
感谢二位的帮助,但说实话我很菜,除了学校里学过的基本语法外,我没有正式的学过c,只是现在需要修改别人写的一个程序而已。我的目的是将文件中读出来的二进制流转换成字符串传给一个接口函数。我目前用下面的方法读出了一个图片的数据:
FILE *fp;
fp = fopen("E:/short/photo/6348.gif", "rb");
现在要做的是如何将fp的值赋给一个字符串变量,所以看了二位的答案我还是不知道应该怎么做,谢谢告知!Top
8 楼herbertke(Herbert Ke)回复于 2002-05-31 16:22:05 得分 0
你云:
"我的目的是将文件中读出来的二进制流转换成字符串传给一个接口函数"
i 云:
"照你的目的驱动的话,你为啥要把fp的值赋给一个字符串变量?"Top
9 楼bowlder(玩石)回复于 2002-05-31 16:27:44 得分 0
那个函数只接受字符串类型。Top
10 楼spark_li(晕忽忽(恶人谷:通讯连长))回复于 2002-05-31 16:49:24 得分 0
看帖主的意思,大概是要直接修改某可执行文件?
Top
11 楼zhrwolf1(清风)回复于 2002-05-31 23:40:34 得分 0
其实不论是二进制还是十六进制数,它转换成字符串都是一样的.
例: int i=85
char ch=char(i);
ch将得i(85)的对应字符'U'Top
12 楼bowlder(玩石)回复于 2002-06-03 08:43:18 得分 0
感谢denghby(迪达) ,要的就是这个。Top




