C语言如何把一个十六进制数转换为二进制数组输出 C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工...

C\u8bed\u8a00\u4e2d\uff0c16\u8fdb\u5236\u5982\u4f55\u8f6c\u6362\u62102\u8fdb\u5236\uff1f

\u5341\u516d\u8fdb\u5236\u6362\u6210\u4e8c\u8fdb\u5236\uff0c\u5c31\u662f\u4e00\u4f4d\u6362\u6210\u56db\u4f4d\u5c31\u53ef\u4ee5\u5566!0x3c,0x\u8868\u793a\u5341\u516d\u8fdb\u5236\uff0c3\u5c31\u6362\u62100011\uff0cc\u5c31\u662f\u5341\u8fdb\u5236\u7684\u5341\u4e8c\uff0c\u6362\u6210\u4e8c\u8fdb\u5236\u4e3a1011\u3002\u5408\u8d77\u6765\u5c31\u662f\u556600111011\uff0c\u4e5f\u53ef\u4ee5\u628a\u524d\u97622\u4e2a0\u53bb\u4e86\uff0c\u4e00\u822c\u4e0d\u53bb .....

C\u8bed\u8a00\u7a0b\u5e8f\u5982\u4e0b\uff1a
#include
int main(){
int N,i,t;
int a[100];
scanf("%d",&N);
for(i=0;N!=0;i++){
a[i]=N%2;
N=N/2;
}
for(t=i-1;t>=0;t--){
printf("%d",a[t]);
}
}
\u601d\u8def\uff1a\u53cd\u590d\u5730\u5c06n\u9664\u4ee52\u53d6\u4f59\u6570\uff1b\u5c06\u53d6\u51fa\u7684\u4f59\u6570\u7528\u6570\u7ec4\u5b58\u653e\uff1b\u7531\u4e8e\u5148\u53d6\u51fa\u7684\u662f\u4f4e\u4f4d\u6570\u636e\uff0c\u540e\u53d6\u51fa\u7684\u662f\u9ad8\u4f4d\u6570\u636e\uff0c\u56e0\u6b64\u9700\u5c06\u6570\u7ec4\u9006\u5e8f\u8f93\u51fa\u3002

\u6269\u5c55\u8d44\u6599\uff1a
1\u3001\u5341\u8fdb\u5236\u6574\u6570\u8f6c\u4e8c\u8fdb\u5236\u6570\uff1a\u201c\u9664\u4ee52\u53d6\u4f59\uff0c\u9006\u5e8f\u6392\u5217\u201d\uff08\u9664\u4e8c\u53d6\u4f59\u6cd5\uff09
2\u3001\u5341\u8fdb\u5236\u5c0f\u6570\u8f6c\u4e8c\u8fdb\u5236\u6570\uff1a\u201c\u4e58\u4ee52\u53d6\u6574\uff0c\u987a\u5e8f\u6392\u5217\u201d\uff08\u4e582\u53d6\u6574\u6cd5\uff09
3\u3001\u5341\u8fdb\u5236\u8d1f\u6570\u8f6c\u4e8c\u8fdb\u5236\uff1a\u201c\u5148\u53d6\u6b63\u6570\u7684\u4e8c\u8fdb\u5236\u503c\uff0c\u518d\u53d6\u53cd\uff0c\u52a01\u201d
\u53c2\u8003\u8d44\u6599\uff1a\u767e\u5ea6\u767e\u79d1-\u4e8c\u8fdb\u5236

楼下的程序应该是将16进制转化为10进制数组,将其改进一下即可,也就是加上将十进制转换为二进制的程序段:全程序如下:
#include <stdio.h>
void main(
{
int i;
int m = 0;
char c[10];
char *r;
scanf("%s",c);
if(c[0]!='0'&&c[1]!='x'&&c[1]!='X')/*判断是不是十六进制数*/
{
printf("不是十六进制数\n");
}
else
{{
i = 2;
while (c[i]!='\0')
{
m = m*16+c[i]-'0';/*将十六进制数转换为十进制数*/
i++;
}
if(m=0)
printf("%d\n",0);
else
for(i=0;m!=0;i++)/*将十进制数转换为二进制数*/
{
*(r+i)=m%2;
m=m/2;
}
for(;i-->=0;)
printf("%d",*(r+i));/*输出二进制数*/
printf("\n");
}
}关于十六进制直接转换为二进制数,直接做很简单,但是用程序实现起来不容易,所以先转换为十进制,再转为二进制,虽有点笨,也算是一种方法吧呵呵,我好久没用c了,可能程序中有些错误,但是进制转换算法本身是没有问题的,也许可以参考一下,希望对楼主有所帮助,早日解决问题

#include <stdio.h>
void main()
{
int i;
int a = 0;
char c[10];
scanf("%s",c);
if(c[0]!='0'&&c[1]!='x')
{
printf("不是十六进制数\n");
}
else
{
i = 2;
while (c[i])
{
a = a*16+c[i]-'0';
i++;
}
printf("%d",a);
}
}

有一个非常简单的算法,直接映射:
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
每位十六进制数用四位二进制表示 。
例如:
(1DE)16 =(1 1101 1110)2

#include <stdio.h>
void main()
{
int i=0;
int m = 0;
char c[10];
int r[8]={0};
scanf("%s",c);
if(c[0]!='0'&&c[1]!='x'&&c[1]!='X')/*判断是不是十六进制数*/
{
printf("不是十六进制数\n");
}
else
{ i = 2;
while (c[i]!='\0')
{
if(c[i]>='0' && c[i]<='9')
{
m = m*16+c[i]-'0';/*将十六进制数转换为十进制数*/
}
if(c[i]>='a' && c[i] <= 'f')
{
m = m*16+c[i]-'a'+10;
}
i++;
}
printf("i = %d\n",i);
printf("m = %d\n",m);
if(m==0){
printf("%d\n",0);
}
else{
for(i=0;m!=0;i++)/*将十进制数转换为二进制数*/
{
r[i]=m%2;
m=m/2;
}
for(i=7;i>=0;i--){
printf("%d",r[i]);
}
}
}
}

Case "0": B = B & "0000"
Case "1": B = B & "0001"
Case "2": B = B & "0010"
Case "3": B = B & "0011"
Case "4": B = B & "0100"
Case "5": B = B & "0101"
Case "6": B = B & "0110"
Case "7": B = B & "0111"
Case "8": B = B & "1000"
Case "9": B = B & "1001"
Case "A": B = B & "1010"
Case "B": B = B & "1011"
Case "C": B = B & "1100"
Case "D": B = B & "1101"
Case "E": B = B & "1110"

  • 濡備綍鐢C璇█瀹炵幇鍗佸叚杩涘埗杞崲涓哄崄杩涘埗
    绛旓細str[i]-'a'+10)*w;else if ( (str[i]>='A')&&(str[i]<='F') ) rt+=(str[i]-'A'+10)*w;w*=n;} return rt;} void main() { int x; char str[256];printf("璇疯緭鍏鍗佸叚杩涘埗鏁锛"); scanf("%s",str);x=convert(str,16);printf("%sH=%dD\n",str,x);} ...
  • 鍐涓涓猚璇█绋嬪簭,灏嗗崄鍏繘鍒舵暟杞寲涓鍗佽繘鍒
    绛旓細char t[MAX];printf("璇疯緭鍏涓涓崄鍏繘鍒鐨勬暟:\n");while((c=getchar())! ='\0'&&i<MAX&&flag1){ if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F'){ flag=1;t[i++]=c;} else if(flag){ t[i]='\0';printf("鍗杩涘埗鏁涓:%d\n",func(t));printf...
  • 鐢C璇█缂栧啓涓涓鍑芥暟瀹炵幇鍗佸叚杩涘埗鏁鑷冲崄杩涘埗鏁扮殑杞崲.鍦ㄤ富鍑芥暟涓緭鍏ュ崄...
    绛旓細void HEX_DEC(int num,int N){ if(num>N-1){ HEX_DEC(num/N,N);} printf("%d",num%N);} void main(){ int num;printf("杈撳叆涓涓崄鍏繘鍒鐨勬暟\n");scanf("%x",&num);printf("鐩存帴鐢%%d杈撳嚭:%d\n",num);printf("鐢ㄥ嚱鏁拌緭鍑:");HEX_DEC(num,10);//杞崲鎴愬嚑杩涘埗灏辨妸绗簩...
  • 鐢C璇█瀹炵幇灏嗕竴涓崄鍏繘鍒舵暟杞崲鎴愪簩杩涘埗鏁,鐒跺悗寰幆宸︾Щ涓浣,寰楀埌...
    绛旓細渚涗綘鍙傝冣︹nclude "stdio.h"// void main(void){ int x;unsigned i;printf("璇疯緭鍏涓涓崄鍏繘鍒舵暣鏁...\nnHex=");scanf("%x",&x);for(i=0x80000000;!(i&x);i>>=1);printf("鍙樹负浜岃繘鍒舵槸:");for(;i;i>>=1)printf("%d",i&x || 0);printf("\n宸︾Щ涓浣嶅悗鏄:0x%X\n"...
  • 甯繖妫鏌涓涓猚璇█绋嬪簭:灏嗕竴涓崄鍏繘鍒舵暣鏁拌浆鍖鎴愬崄杩涘埗鏁存暟鐨...
    绛旓細2銆佹垜浠亣璁惧崄浣嶄笂鏄殑鏁板瓧鏄1锛岄偅涔堣繖涓暟浠h〃浜16锛岃繖鏃跺欑敤涓涓瀛楃鏄棤娉曡〃绀虹殑 涔熷氨鏄锛屼笉鑳界畝鍗曠殑鐢╯[i]鍘诲瓨鏀惧師16杩涘埗鐨勬煇浣杞崲鎴10杩涘埗瀵瑰簲鐨勬暟 涓涓畝鍗曠殑淇敼鏂规硶鏄紝璁ゝunc鍑芥暟杩斿洖涓涓猧nt鍨嬬殑鏁板硷紝杩欎釜杩斿洖鍊煎氨鏄搴旂殑鍗杩涘埗鏁 鍏蜂綋浠g爜瑙佷笅 include<stdio.h> include<string....
  • 姹涓涓狢璇█绋嬪簭,瑕佹眰鏄鎶婅緭鍏鐨16杩涘埗鏁拌浆鎹涓2杩涘埗鏁,鐒跺悗缁熻杩 ...
    绛旓細DecimalToBinary(num);//璋冪敤鍑芥暟灏嗗崄杩涘埗鏁拌浆鎹鎴愪簩杩涘埗鏁 len=strlen(str);printf("鍗佸叚杩涘埗鏁涓猴細%x\n",num);printf("浜岃繘鍒惰〃绀轰负锛");for(i=len-1;i>=0;i--){ printf("%c",str[i]);} printf("\n");while(num!=0){ cnt++;num=num&(num-1);}//缁熻浜岃繘鍒朵腑1鐨涓鏁 p...
  • 涓涓寰堢畝鍗曠殑C璇█棰,灏辨槸鎶婂崄鍏繘鍒鐨鏁拌浆鎹涓哄崄杩涘埗鐨勬暟,鏈2涓湴...
    绛旓細3. flag1锛堟槸鍚︾户缁爣蹇楋級涓簄/N銆傚鏋滄病鏈変笂杩版儏鍐靛氨瑕佷竴鐩村惊鐜笅鍘汇傚惊鐜綋棣栧厛璇诲彇杈撳叆锛屽鏋滅鍚堜笅杩拌姹傦紝else-if鏄笉杩涘叆鐨勶紝鍗冲缁堝浜庤鍙栫姸鎬佽屼笉杞崲锛1. 褰撳墠瀛楃鏄鏁板瓧锛2. 褰撳墠瀛楃鏄痑-f涓殑涓涓瀛楁瘝锛3. 褰撳墠瀛楃鏄疉-F涓殑涓涓瓧姣嶏紱濡傛灉婊¤冻杩欎簺锛屽皢濮嬬粓澶勪簬璇诲彇杈撳叆鐨勭姸鎬併傚惁鍒...
  • C璇█鍐涓涓鍑芥暟,16杩涘埗杞崄杩涘埗
    绛旓細printf("璇疯緭鍏涓涓鍗杩涘埗鏁存暟锛");scanf("%d",&num);while(num>0){ yushu=num%16;a[i++]=yushu;num=num/16;} printf("杞寲涓哄崄鍏繘鍒鐨勬暟涓猴細0x");for(i=i-1;i>=0;i--)//鍊掑簭杈撳嚭 { m=a[i];printf("%c",hex[m]);} printf("\n");} C璇█鏄竴闂ㄩ氱敤璁$畻鏈虹紪绋嬭瑷锛...
  • C璇█涓庝箞鎶16杩涘埗杞崲鎴恇cd鐮
    绛旓細void HextoBCD(u8 *pBuff,u8 len) //鍗佸叚杩涘埗杞负BCD鐮 { u8 i,temp;for(i=0;i<len;i++){ temp=pBuff[i]/10;time[i]=pBuff[i]%10+temp*16;} }
  • C璇█濡備綍鎶婂崄鍏繘鍒惰浆鎹鎴愬叓杩涘埗
    绛旓細鍏灏嗗崄鍏繘鍒惰浆涓浜岃繘鍒惰〃绀 鍐嶅皢浜杩涘埗杞崲涓哄叓杩涘埗琛ㄧず锛岀劧鍚庤緭鍑 鍏蜂綋绋嬪簭瀹炵幇濡備笅锛歩nclude <stdio.h>#include <stdlib.h>#include <string.h>/* 灏嗗崄鍏繘鍒跺瓧绗﹁浆鎹负鏁板 */ int get_value(const char c){ if (c >= '0' && c <= '9') return c - '0'; else retu...
  • 扩展阅读:十六进制在线转换器 ... c语言输入十六进制数 ... 十六进制转换计算器 ... 十六进制颜色查询器 ... 十六进制计算在线 ... 十六进制转二进制步骤 ... 六进制对照表 ... 十六进制转八进制例题 ... c语言进制数互相转换代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网