重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
在我們日常的編程中,有時候需要格式化輸出一個整形數據的二進制,但是在我們C語言中只有
輸出十進制:%d;
輸出十六進制:%x;
輸出單個字符:%c;
輸出字符串:%s;
輸出變量所在的地址:%p;
而并沒有這種二進制對應的格式,所以需要我們手動來實現。
本篇博客給大家介紹兩種方法:
1.通過庫函數itoa,需要包含頭文件:#include
2.通過十進制轉成二進制的常用方法——短除法;
為方便大家使用,將兩種方法都封裝成了函數,源碼如下:
#include#include#define uint32 unsigned int
#define uint8 unsigned char
void FuncOutputBin(uint32 value)
{char string[32]={0}; //形參類型uint32大為32位,因此我這里定義了大小為32的字符串數組存放
itoa(value, string, 2);
printf("庫函數得到的二進制為:%s\r\n",string);
}
//用短除法的思想得到二進制,之后將數據從后往前讀取
void ShortDivOutputBin(uint32 input)
{uint8 temp[33] = {0};
int i = 0;
printf("短除法得到的二進制為:");
while(input)
{temp[i] = input % 2; //取余數存放到數組中,此為得到的二進制數
input = (uint32)input / 2; //短除,while中判斷是否除盡
i++; //存儲了一個二進制數,自加存儲下一個
}
for(i--; i>=0; i--) //由于最后一次input為0無效,i還是自加了,因此最后一次自加的值是無用的,所以先自減,然后將余數從后往前讀取
{printf("%d",temp[i]);
}
printf("\r\n");
}
void main(void)
{uint32 input = 0;
printf("請輸入一個需要轉化為2進制的整形數據:");
scanf("%d", &input);
FuncOutputBin(input);
ShortDivOutputBin(input);
}
3.結果展示itoa函數原型:char *itoa( int value, char *string,int radix)
功能:將整形數據value轉化成需要的進制radix,然后將之以字符串的形式存放在string中;
返回值:轉化成對應進制后的字符串的地址,也可以不使用返回值;
它的三個參數依次為:
value:需要轉化的整形數據;
string:轉化成對應進制后的字符串的地址;
radix :需要轉化的進制(我這里需要轉化為2進制,所以填2);
(有圖有真相咯~)
放在最后,喜歡作者的歡迎關注我們的公眾號"腦補空間”,會為大家推送更多推文~
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧