首页 > 解决方案 > 有没有办法简化/整合这个发送功能

问题描述

有没有办法简化/整合这个发送功能,例如:

int __fastcall HSend(void* _this, void* unknown,  BYTE* buffer, int len) {
    if (len > 0)
    {
        std::cout << std::hex << "[Packet]" << std::endl;
        std::stringstream EncrpytedPacket;
        for (int i = 0; i < len; i++) {
            EncrpytedPacket << std::hex << std::setfill('0') << std::setw(2) << (unsigned int)(unsigned char)buffer[i];
        }
        std::cout << "[Send][" << EncrpytedPacket.str() << "]" << std::endl;

    }
    return oSend(_this, buffer, len);

}

标签: c++

解决方案


不要使用endl. 只需输出\n以写入换行符。它相当慢,无论如何输出到控制台都是“单元缓冲”的。

对循环中的每个字节执行所有 iostream 模式更改、填充、宽度等操作很慢。无论如何,在通话之间会记住哪些?或者,使用高效的函数在一次调用中将一堆字节转换为十六进制。

(unsigned int)(unsigned char)buffer[i]

你为什么要堆叠演员表?


推荐阅读