zoukankan      html  css  js  c++  java
  • 鸡肋

    1. 整型转字符串,定长格式化16进制:

    如:0X10 --> 0X00000010

    1 sprintf(szData, "0x%08x", dwData);//注意中间的0,长度不足,用0填充

    2. 字符串转整型

    如:"1001" --> 9

    1 int nDec =strtoul(szBin, NULL, 10);//10为进制,将字符串的内容转换为10进制整型。

    3. STL常用容器简介

    vector<T>:可自动增加容量的数组,使用连续的内存空间。支持[ ]操作符和vector.at( ),只能在vector的最后进行push、pop。

    list<T>:双向链表,不使用连续的内存空间。不支持[ ]操作符和vector.at( ),可以很方便的在内部插入和删除,可以在两端进行push、pop。

    deque<T>:双向队列,使用连续的内存空间,在功能上合并了vector和list。支持[ ]操作符和vector.at( ),可以很方便的在内部插入和删除,可以在两端进行push、pop。

    map<K, T>:关联容器,map的数据结构采用红黑树实现,插入键的元素不允许重复,比较函数只对元素的键进行比较。

    4. 调整寄存器,使其指向的内存为可写内存

    如:调整 ESI 指向的内存为可写内存,可以利用类似的指令如:

    1 push esp
    2 pop esi
    3 retn

    但这些指令不是很好找,这里介绍一种变通的方法:

    (1)找到 pop eax retn 指令,并让程序转入改位置执行。

    (2)找到一条 pop esi retn 的指令,并保证在执行(1)中 pop eax 时它的地址位于栈顶,这样就可以把该地址放在eax中。

    (3)找到 push esp jmp eax 指令,并转入执行。

    栈布局:

     EBP + 4 [ POP EAX RETN ]          //函数返回地址位置,执行 RETN 指令 
     EBP + 8  [ POP ESI RETN ]
     EBP + C  [ PUSH ESP JMP EAX ]

    5. C语言,输出BSTR

    1 BSTR strTmp = SysAllocString(L"Hello World!");
    2 wprintf(L"GetString : %s
    ", strTmp);            //注意字符串前面的L
    3 SysFreeString(strTmp);
  • 相关阅读:
    动画效果打开层 关闭层
    一个正在加载网页的进度条,加载完后,自动消失?>
    使用ASP.NET AJAX必要的配置
    css静态滤镜 + A:Hover 的效果
    可擦写的涂改文字
    各种遮罩层(lightbox)实现
    oracle 11g 安装
    SMTP协议
    javaoracle驱动包
    批量处理JDBC语句提高处理速度
  • 原文地址:https://www.cnblogs.com/luzhiyuan/p/3870821.html
Copyright © 2011-2022 走看看