C语言 把char 型 或者 整数转化成二进制 要怎么转
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 把char 型 或者 整数转化成二进制 要怎么转相关的知识,希望对你有一定的参考价值。
C语言 把char 型 或者 整数转化成二进制 要怎么转
这个可以使用itoa函数itoa为c语言的一个函数。itoa函数是一个广泛应用的,从非标准扩展到标准的C语言。它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通过header<stdlib.h> ,因为它是一个从逻辑对应到标准库的函数。itoa取整数输入值,并将其转换为数字的基数。
原 型
char *itoa( int value, char *string,int radix);
功 能
把一整数转换为字符串
用 法
itoa(i,num,10); i ----需要转换成字符串的数字 num---- 转换后保存字符串的变量 10---- 转换数字的基数(即进制)。10就是说按10进制转换数字。还可以是2,8,16等等你喜欢的进制类型 返回值:指向num这个字符串的指针
程序例: #include <stdlib.h> #include <stdio.h> int main(void) int number = 12345; char string[25]; itoa(number, string, 10); printf("integer = %d string = %s\n", number, string); return 0; char *itoa(int value,char *string,int radix) 将整数value转换成字符串存入string, radix为转换时所用基数(保存到字符串中的数据的进制基数) 参考技术A char型在内存中保存的是ASCII码,就是二进制,整型本身就是二进制存放。 参考技术B 例如:
/*Compiler:Borland C++3.1 , if VC not use include file*/
#include <stdio.h>
#include <mem.h>
#define A_CHAR_BITS 8
int main(void)
char a;
char bits[A_CHAR_BITS + 1];
int i;
memset(bits , 0 , A_CHAR_BITS + 1);
a = 0x10;/*example*/
for(i = 0 ; i < A_CHAR_BITS ; i ++)
if(a & (0x01 << i))
bits[i] = '1';
else
bits[i] = '0';
printf("The char bits as followings:%s." , bits);
return (0);
参考技术C 除2取余法。。。
C语言中 怎样把一个int转换成char
大家好 我是编程新手,有如上问题,
譬如说 int a=8; 我要怎样 char b 把这个a转换成char。我懂如果a是固定的,就看ascii table来把b写死也是,但是我的a是个变量, 怎样表示char b呢?
谢谢!
0,1,2,3,4,5,6,7,8,9
共计10个字符。
这十个字符在存为字符型时,其存储值为对应的ascii码,而这些ascii码是连续的,且按照其本身数字的大小来排列。
这样就可以将字符值,减去起始ascii码值实现转为对应值的效果。
设
int a; //转换的目标变量。
char c = \'7\'; //要转换的字符。
c = a - \'0\';
这样得到的就是对应的值了,即c = 7。
如果在文件中需要多次该操作,则可以定义一个带参宏,如下:
#define chartonumber(x) (x-\'0\')
这样只需要调用
c = chartonumber(a);
即可实现效果。 参考技术A 有个函数叫itoa,用法是这样的:
itoa(数字,目标字符串,进制),
如char str[100];
int num = 123;
itoa(num, str, 10);追问
谢谢回答 那这个函数需要加header吗?还是讲可以直接拿来用?
追答要加头文件的,是#include
不过有一点需要注意:
itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在头文件中包含这个函数。
不过你也不用担心,只要你写的代码能通过编译并运行就行,只要知道有这件事就行了。
可我用的程序不是visual studio 我的是用来把程序烧进单片机的。我没有这个header 我跑程序的时候 有错误。还有别的办法可以转换吗?
追答据我所知,Keil 里面是有stdlib.h的吧。。你检查一些有没有书写错误。
不然我们自定义这个函数好了。。
#include<iostream>#include<windows.h>
#include<string>
#include<cstdlib>
using namespace std;
void change(int num, char *str)
int p = 0;
int tmp = num;
while(tmp)
p++;
tmp /= 10;
if(num > 0)p--;
tmp = num > 0 ? num : -num;
while(tmp)
str[p] = (tmp%10) + '0';
p--;
tmp /= 10;
if(num < 0)str[0] = '-';
int main()
char str[100];
change(1234, str);
change(-12345, str);
printf("%s\\n", str);
getchar();
return 0;
写的可能比较粗糙,你可以看着改进改进。。
谢谢你!我用的也不是keil 我用的是Flyport IDE 他的header format跟keil有区别,你的code 我这放进去试一下 如果不行 我尝试别的方法 不转换了,直接从别的地方串口读。but thank you anyway!! :)
追答单片机硬件这些我不太懂,不过希望我的代码能起作用吧 :)
本回答被提问者采纳以上是关于C语言 把char 型 或者 整数转化成二进制 要怎么转的主要内容,如果未能解决你的问题,请参考以下文章