XCC

Python3基础-字符串方法

廉价感情. 提交于 2020-04-08 00:34:19
字符串类型转换 int() 将符合整数格式的字符串转换为整数。 int("589") == 589 int(4.56) == 4 float() 将符合浮点数格式的字符串转换为浮点数。 float("45.6") == 45.6 float(5) == 5.0 str() 将整数和浮点数转换为字符串。 str(567) == '567' str(45.6) == '45.6' str(0xcc) == '204' 字符串大小写转换 lower() 大写全转换小写 >>> 'ABC,ABC,ABC,ABC,ABC,ABC,ABC'.lower() abc,abc,abc,abc,abc,abc,abc upper() 小写全转换大写 >>> 'abc,abc,abc,abc,abc,abc,abc'.upper() ABC,ABC,ABC,ABC,ABC,ABC,ABC title() 单词首字母转换为大写 >>> 'abc,abc,abc,abc,abc,abc,abc'.title() Abc,Abc,Abc,Abc,Abc,Abc,Abc capitalize() 语句首字母转换为大写 >>> 'abc,abc,abc,abc,abc,abc,abc'.capitalize() Abc,abc,abc,abc,abc,abc,abc swapcase() 大小写互换 >>>

C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理

最后都变了- 提交于 2019-12-23 16:05:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理 C语言中,数组初始化的方式主要有三种: 1、声明时,使用 {0} 初始化; 2、使用memset; 3、用for循环赋值。 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: [cpp] view plain copy #define ARRAY_SIZE_MAX (1*1024*1024) void function1() { char array[ARRAY_SIZE_MAX] = {0}; //声明时使用{0}初始化为全0 } void function2() { char array[ARRAY_SIZE_MAX]; memset(array, 0, ARRAY_SIZE_MAX); //使用memset方法 } void function3() { int i = 0; char array[ARRAY_SIZE_MAX]; for (i = 0; i < ARRAY_SIZE_MAX; i++) //for循环赋值 { array[i] = 0; } } 效率: 分别执行上面三种方法,统计下平均时间可以得出: for循环浪费的时间最多,{0} 与memset 耗时差不多。 原理: 1、for循环

Windows下反反调试技术汇总

我们两清 提交于 2019-12-12 18:20:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、前言 对于安全研究人员来说,调试过程中经常会碰到反调试技术,原因很简单:调试可以窥视程序的运行“秘密”,而程序作者想要通过反调试手段隐藏他们的“秘密”,普通程序需要防止核心代码被调试逆向,恶意代码需要隐藏自己的恶意行为防止被跟踪。就像病毒和杀软的关系一样,为了顺利的逆向分析,有反调试手段就有对应的破0解方法-反反调试。对此,天融信阿尔法实验室研究人员总结了各类常见反调试手段以及对应的绕过方案,作为总结希望与君共勉。 关于各种反调试手段,网络上和各种安全书籍上都有对应的介绍、各种调试工具插件已经集成了反调试功能,但有的只是介绍了反调试方法,并没有对应的破0解方式,有的反调试手段已经失效。本文并不是研究新的反调试方法,而是对windows平台的反调试技术进行分类总结,并介绍其原理和应对方法。 合理的分类有助于学习和理解各种反调试技术的原理,由于理解不同,分类也不尽相同。当你掌握了这些技术后,可以按照自己的理解重新给它们分类。本文按照静态反调试方法与动态反调试方法将反调试技术分为两大类,其中静态反调试技术的分类原理为:程序启动时,系统会根据正常运行和调试运行分配不同的进程环境,通过检测进程环境来检测进程是否处于调试状态;根据逆向人员的工作环境和程序的正常运行环境不同,可以通过检测调试器或逆向分析工具实现反调试

BYTE,WORD,DWORD的大小及一些特殊的"高低位宏"

给你一囗甜甜゛ 提交于 2019-12-06 10:16:04
一、定义 在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORD typedef unsigned long DWORD; typedef unsigned char BYTE; typedef unsigned short WORD; 在Visual C++ 6.0中,char型长度为1字节,short型长度为2字节,int和long型长度都为4字节,因此可以认为BYTE与WORD,DWORD定义的变量分别获得了1字节,2字节,4字节内存,正与BYTE与WORD,DWORD的字面意义相符。 即: BYTE=unsigned char(完全等同): 8位 WORD=unsigned short(完全等同): 16位 DWORD=unsigned long(完全等同): 32位 下面是一些平时用得比较少的宏: 二、Window 宏 1. LOBYTE( 从给定16 位值中提取低位字节) BYTE LOBYTE( WORD wValue // value from which low-order byte is retrieved ); #define LOBYTE(w) ((BYTE) (w)) 如:WORD w=-0x1234;//w在内存中以补码形式存储:0xedcc,即0xcc(低地址)

漫话:如何给女朋友解释什么是"锟斤拷"?

ぃ、小莉子 提交于 2019-11-29 03:51:40
漫话:如何给女朋友解释什么是"锟斤拷"? ​ 周末女朋友出去逛街了,我自己一个人在家看综艺节目,突然,女朋友给我打来电话。 过了一会,女朋友回来了,她拿出手机,给我看了她在超市拍的照片:  要想知道什么是乱码,需要先从计算机编码说起。 字符编码和ASCII 我们经常看一些谍战剧,谍战剧里敌特、地下党员以及八路军各部间发送情报的时候,一般都是通过电报发送的,电报在传递的过程中,需要发报员用电键发出长短不一的电码,收报员就会听到电报机发出的滴滴滴答答答的声音。其实电报发出的声音都是"滴"和"答"的组合,"答"的声音是"滴"的三倍长。 发报员要先通过一种方式,将想要发送的情报转成电报的滴答声,收报员在听到滴答声之后,再将它们翻译成正常的文字。这个过程就是字符编码和字符解码。 谍战剧中将情报转成电报的"滴"和"答"声主要通过 摩尔斯电码 ,这是一种通过不同的排列顺序来表达不同的英文字母、数字和标点符号的字符编码方式。莫尔斯电码由短的和长的电脉冲(称为点和划)所组成。点和划的时间长度都有规定,以一点为一个基本单位,一划等于三个点的长度。正好对应上电报的"滴"和"答"。 就像电报只能发出"滴"和"答"声一样,计算机只认识0和1两种字符,但是,人类的文字是多种多样的,如何把人类的文字转换成计算机认识的01字符呢,这个过程同样需要通过字符编码。 字符编码(Character encoding