C++走过的路-C++中让两个数字输入的时候用逗号隔开
123456int a,b;cin >> a ;if (cin.get()==',' ) //如果不按 数字+逗号+数字格式输入,则不允许输入第二个数,以达到限制要求 否则,用户输入数字+空格+数字也能达到输入两个数字{ cin>>b ;}
C++走过的路-深入理解c语言'\0','0',"0" ,0之间的区别
‘\0’和’0’的区别有一个共同点就是它们都是字符,在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节。请翻开你的ASCII字符集表吧,一般在你的C语言教材的附录上,没有的话网上查查哦。请看第一个ASCII码,对是0,对应的字符是(Null),其实就是’\0’,即空字符。判断一个字符串是否结束的标志就是看是否遇到’\0’,如果遇到’\0’,则表示字符串结束。而字符’0’对应的ASCII码是48,48对应的十六进制数就是0x30,通常我们在编程的时候,用字符转化为数字的时候经常要用到,比如要将’8’转换为数字8,在语句中这样写就可以了,'8'-'0'。这里的8就是数字。
‘0’和0的区别前者是字符常量,后者是整形常量,它们的含义和在计算机中的存储方式截然不同。但是字符常量可以像整数一样在程序中参与相关运算。例如:'8'-3。
“0”和’0’的区别首先”0”是字符串常量,字符串常量是由一对双引号括起的字符序列。例如:”CHINA”,”I LOVE YOU”,”123”等都是合法的字符串常量。’0’是字符常量,字符串常量和字 ...
C++走过的路-使用cin保留小数位数
闲时把大一刚开始学C++时遇到的一些小问题记得笔记转移过来,顺便重温了一下当时(^_^)
以保留2位小数为例,代码如下:
1234567891011#include <iostream>#include <iomanip>using namespace std;int main(){ double a; cin>>a; cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<endl;//fixed为实数输出,若改为scientifitic则是科学技术法输出;setprecision(2)此处表示设置精度为2 return 0;}
调色板图像隐写
一、实验目的了解调色板图像的特点,掌握基于调色板图像的信息隐藏原理,设计并实现一种基于调色板图像的信息隐藏算法。
二、实验环境
Windows XP或Vista操作系统;
Matlab 7.1版本软件;
调色板图像。
三、原理简介调色板图像含有一个不超过256种颜色的调色板,并对应每种颜色的R、G、B三种分量的值,图像内容中的每个像素存储的是一个不超过8比特的索引值,其指向调色板中的对应颜色就是图像的真实色彩。大部分图像用到的颜色数小于256种,甚至小于128种,因此可以在调色板中隐藏秘密信息。调色板图像的调色板中最多包含256种颜色,若改变这些颜色的排列顺序并相应地改变图像像素数据,不会对图像内容造成任何影响。因此隐藏秘密信息最简单的方法就是重新排列调色板中的这些颜色,同时修改索引值,但是许多软件生成的调色板都是按照亮度和使用频率排列的,如果在调色板中打乱颜色会使其毫无隐藏可言。如果调色板颜色小于128种,可复制一个调色板,得到一个扩展的周色板,隐藏0使用原始索引值,隐藏1使用扩展索引值,但是重复颜色的调色板会引起使用者怀疑。本节中使用另外一种方法来隐藏信息,对于调色板中的每- ...
PWN学习之路 - 字符串格式化漏洞总结
一、函数原型int printf(const char format,…)*常规用法
123char str[10];scanf("%s",str);printf("%s",str);
另外一种用法
123char str[10];scanf("%s",str);printf(str)
第一种用法没有错误,但是在第二种方法中没有规定format参数,用户便可以通过构造str来实现内存的任意读写。printf函数的格式化字符串常见的有
%d,%f,%c,%s,%x(16进制数,没有0x),%p(16进制数,有0x)等。%n ,它的功能是将%n之前打印出来的字符个数,赋值给一个变量。%hn,%hhn,%lln,分别为写入目标空间2字节,1字节,8字节。
注意是对应参数(这个参数是指针)的对应的地址开始起几个字节。不要觉得%lln,取的是8个字节的指针,%n取的就是4个字节的指针,取的是多少字节的指针只跟程序的位数有关,如果是32位的程序,%n取的就是4字节指针,64位取的就是8字节指针,这是因为不同位数的程序,每个参数对应的字 ...