第十一节 机试题之数据编码
来源:互联网 发布:cmd怎么测试端口 编辑:程序博客网 时间:2024/05/23 19:01
第十一节 机试题之数据编码
某部队为了防止消息泄密从而对原始数据进行编码,编码规则如下。
1) 所有信息都为ASCII 编码;
2) 在收到原始密文后将字符进行二进制逆转,如字符'A'(0x41,0100 0001B)将数据逆转后为(0x82,1000 0010B);
3) 将逆转后的数据按照16 进制打印输出(原始数据允许空格),如字符串"ABCD EFGH"加密后的输出结果为:"8242C22208A262E212"。
为了加快编码解码速度现在需要你编写一个程序实现该密文的编码。
这个题目说到底就是将一个字符转化成二进制,再将这个二进制的高低位逆转,之后输出逆变后对应数据的ASCII。
二进制高低位逆转在12.4有详细讲解,为了算法不重复,这里采用逐位逆转方法进行解答。
// text.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <string.h>
/****************************************************************
** 函数名称: Printb
** 函数功能: 输入一个数据,将其二进制反位输出
** 入口参数: uiValue:待转换的值
** 出口参数: None
** 返回值 : uiSum: 转换之后的值
****************************************************************/
unsigned int Printb( unsigned int uiValue)
{
unsigned int uiSum = 0 ;
/* 将数据的二进制逆位 */
for ( int i = 0 ; i < 8 ; i++ )
{
uiSum = ( uiSum << 1 ) + ( uiValue & 0x01 ) ;
uiValue = ( uiValue >> 1 ) ;
}
return uiSum ;
}
/****************************************************************
** 函数名称: main
** 函数功能: 主函数
** 入口参数: argc,* argv[]
** 出口参数: none
** 返回值 : 0
****************************************************************/
int main(int argc, char* argv[])
{
char s[100] ;
unsigned int iArray[100] ;
scanf( "%s" , s ) ;
/* 将字符串转化为整型数据 */
for ( int i = 0 ; i < strlen(s) ; i++ )
{
iArray = s ;
}
/* 以十六进制输出字符串数据 */
for ( int j = 0 ; j < strlen(s) ; j++ )
{
printf( "%x" , iArray[j] ) ;
}
printf( "\n" ) ;
/* 以十六进制输出译码后的字符串数据 */
for ( int k = 0 ; k < strlen(s) ; k++ )
{
printf( "%x" , Printb( iArray[k] ) );
}
printf("\n") ;
return 0;
}
编译结果:
ABCDEFGH
4142434445464748
8242c222a262e212
请按任意键继续. . .
- 第十一节 机试题之数据编码
- 第十一节包装类及相关面试题
- Spark修炼之道(基础篇)——Linux大数据开发基础:第十一节:Shell编程入门(三)
- CUDA, 用于大量数据的超级运算:第十一节
- CUDA, 用于大量数据的超级运算:第十一节
- 第十一节::面向对象之封装续二
- 第十一节 常用组件 之 Source Qualifier 创建SQ转换
- php学习 第十一节
- 第十一节 串口通信
- 第十一节 Trait进阶
- 第三章 第十一节 总结
- 第十一节,命名空间namespace
- 第十一节 逻辑操作符
- 第十一节 进程间通信
- OC学习第十一节Json
- js第十一节-字符串方法
- 第十一节下篇:Object类
- 第十一节 搭建邮件服务器
- 算法练习之约瑟夫环
- 第八节 内存分配与内存释放
- 第九节 笔试中的几个常考题
- 第十节 数据结构之冒泡排序、选择排序
- 二叉树遍历的递归和非递归实现
- 第十一节 机试题之数据编码
- 第十二节 机试题目之十进制1~N的所有整数中出现“1”的个数
- 第十三节 机试题之 遍历单链表一次,找出链表中间元素
- 第十四节 机试题之全排序
- DTU基础知识普及手册
- 软件设计,全心全意保护用户数据
- 第十五节 机试题之大整数加法运算
- 第十六节 机试题之大整数减法与乘法
- 面向对象设计原则