由于C是靠近底层的语言,必须要学习精通各种进制。虽然C标准库有进制转换的函数,但还是要自己能够实现这些函数才能加深理解,不定期整理一些学习笔记,加深理解
- 二进制字符串转十进制
#include <math.h>
int biToInt(char *s) {
int number = 0;
int length = strlen(s);
for (int i = 0; i < length; i++)
{
if (s[i] == '1')
{
printf("%d\n", i);
number += pow(2.0, length-1-i);
}
}
return number;
}
- 十进制数转二进制字符串
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
void itoBits(int n, char *ps) {
int size = CHAR_BIT*sizeof(int);
for (int i = size - 1; i >= 0; i--, n = n>>1)
{
ps[i] = (1 & n) + '0';
}
ps[size] = '\0';
}
int main(int argc, char *argv []) {
char s[sizeof(int)*CHAR_BIT];
itoBits(199, s);
puts(s);
return 0;
}