簡體   English   中英

C ++將字符串轉換為十六進制字符串的最有效方法

[英]C++ most efficient way of transforming string to hex string

我有這個:

std::string TCPMessengerServer::hexStr(unsigned char *data, int len)
{

    constexpr char hexmap[] = { '0', '1', '2', '3', '4', '5', '6', '7',
        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

    std::string s(len * 2, ' ');
    for (int i = 0; i < len; ++i) {
        s[2 * i] = hexmap[(data[i] & 0xF0) >> 4];
        s[2 * i + 1] = hexmap[data[i] & 0x0F];
    }
    return s;
}

但是,我想知道是否有更有效的方法。 我還想知道是否有更簡單的方法,但是如果有,那么,它們在性能上的取舍。

對於長度超過幾個字符的字符串,避免可能的動態內存分配將更加有效。

避免這種情況的一種好方法是讓調用方傳遞一個緩沖區以將結果放入其中,並使用動態分配合適的緩沖區(例如,如您的代碼中的std::string )來提供默認包裝器。

但是,除非測量顯示該功能絕對是至關重要的性能,否則很可能只是浪費工作:這當然不是要做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM