版权声明:本文为博主 乔小白- 一字一句敲出来的原创作品,未经博主允许不得转载,多谢支持。
本系列博客仅做经验交流分享,不能用作任何商业用途。本文中如有不足之处,请留言,本人将及时更改。
进制转化到密码学
1.什么是进制?
- 在数据的记录中,数据分为很多种进制,本帖我们介绍数据存储的进制问题。
- 我们在正常的数学运算中,采用的是十进制(逢十进一),但是在计算机的数据中,有很多进制;下面列举几个进制:二进制,八进制,十六进制。
1.二进制:
请参考链接二进制
2.八进制:
请参考链接八进制
3.十进制:
请参考链接十进制
4.十六进制:
请参考链接十六进制
2.如何转化进制
- 简述一下,进制问题就是逢几进一的问题。
- 当我们需要转化进制的时候,最好的方法就是将数据转化成二进制,然后再根据规律转化成想要的数据。
1.二进制表示方式:
在完成进制转化之前,必须要知道的一件事情:2的0~10次方是什么!
下面列举了2的0次方到2的10次方值:
所用函数介绍:
/*
* 函数名:pow()
* 参数:底数x, 指数y
* 返回值:运算结果
* 作用:计算x的y次方
* 位置:在头文件math.h中
*/
double pow(double x, double y);
实现代码如下:
#include<math.h>
#include<stdio.h>
int main(void)
{
for (int i = 0; i < 11; i++)
{
printf("%lf\n", pow(2, i));
}
system("pause");
}
代码运行结果如下:
2.下面我们来看一下各种进制的表示方法:
- 二进制
以1和0组成,可以代表开关量。0代表关,1代表开。
- 八进制
C语言中以0开头的数。
-
十进制
正常我们的数据记录方式。
-
十六进制
以0x(或者0X)开始的数据,大小写都可以。
- 在C语言中,每种进制都有自己独特的表示方式。
- 在C语言中,八进制的0,如果不加特别的修饰,很容易被编译器忽略。
下面介绍一下,C程序中八进制和十六进制的表示方法
所用函数介绍:
/*
* 函数名:putchar
* 参数:字符c
* 返回值:无
* 作用:输出一个字符
* 位置:在头文件stdio.h中
*/
char putchar(char c); //注意对于字符,使用的是单引号,字符串是双引号
预览程序:
/*
* 函数名:putAB
* 参数:无
* 返回值:无
* 作用:输出AB两个字符
*/
void putAB(void)
{
/*
*八进制使用的是 \
* 十六进制使用的是 \x
*/
putchar('\101'); //八进制
putchar('\x42'); //十六进制
getchar();
//'0' 48
//'A' 65
//'a' 97
}
所用函数介绍:
/*
* 函数名:_itoa
* 参数:数值Value ,字符串地址buffer ,转化的进制类型Radix
* 返回值:无
* 作用:输出一个字符
* 位置:在头文件stdio.h中
*/
char* _itoa(int Value, char* buffer , int Radix);
下面主要讲解一下如实使用C代码实现进制转化
注意:手动转化请依靠课堂教学为准
代码展示:
/*
*Copyright (c) 2019.池州市集成电路可靠性分析与嵌入式研究实验室
*All rights reserved.
*摘要:使用函数,将数据的进制改变,并熟悉二进制,八进制,十六进制。
*文件名称:数据交换.c
*文件标识:无
*
*当前版本:v1.0
*作者:乔勇刚
*完成日期:2019/09/08
*
*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
int num = 0;
scanf("%d",&num);
printf("num=%i\n", num);
char str[32] = "0";
_itoa(num, str, 2);
printf("\n%s\n", str);
_itoa(num, str, 8);
printf("\n%s\n", str);
_itoa(num, str, 10);
printf("\n%s\n", str);
_itoa(num, str, 16);
printf("\n%s\n", str);
/*如果是getchar()必须要是两个才有效,回车也是字符*/
//getchar();
//getchar();
system("pause");
}
/*
* cmd中 < 相当于输入, > 相当于输出
* 进制转化.c < 1.txt >2.txt
*/
补充知识点ASCII码是一种字符与数字见相互转化的特殊表示(点击可查看该知识点)