strtol將是我的計劃,我想這是非常快的很慢功能
非常緩慢,比如我有這個字符串:
PCHAR ex = "\x55\xEC" etc...
他們是十六進制,所以如果我想寫它沒有「\ x」來像「55 EC」等。我必須使用與strtol,但strtol將是我的程序非常慢我想在我的程序最快的國家之一..
I use strtol like (CHAR)strtol(ex, &ex, 16);
心靈請幫我嗎?
strtol將是我的計劃,我想這是非常快的很慢功能
非常緩慢,比如我有這個字符串:
PCHAR ex = "\x55\xEC" etc...
他們是十六進制,所以如果我想寫它沒有「\ x」來像「55 EC」等。我必須使用與strtol,但strtol將是我的程序非常慢我想在我的程序最快的國家之一..
I use strtol like (CHAR)strtol(ex, &ex, 16);
心靈請幫我嗎?
你在想什麼? strtol
將字節字符串轉換爲長整數;當字符串有0x
作爲前綴時,它將該字符串視爲十六進制數字。它不會將\x55
轉換爲55
。假設三個錯誤:
0x55
轉換爲55
。不,它會將它轉換成85
(十進制)long
或long long
)\x
格式的十六進制數。不,這應該是0x
,因爲它將它識別爲十六進制值你有什麼不是strtol
的用例。您必須手動進行轉換。
所有你需要的只是找到所有\x
與空間的查找替換和修剪產生的字符串颳去領先的空間。
我想將55本身轉換爲0x55 ^^ – Frought 2014-11-05 09:08:44
我會做這樣的事情:
unsigned long ex[] {0x55, 0xEC};
for (auto i : ex)
std::cout << std::hex << i << " ";
輸出是:55 EC
你讓我錯了,我想輸入像「55 EC」,並將其轉換爲0x55和EC到0xEC strtol做得很對,但它真的很慢需要6秒或5秒才能得到它,而我希望它真的很快 – Frought 2014-11-05 09:10:21
@Frought:不,你錯了:你的問題中的輸入是「\ x55 \ xEC」,而不是「55 EC」。這些字符串完全不同,實際上是一個不同的問題。 'char ex [] {0x55,0xEC,0};'與'char ex [] =「\ x55 \ xEC」相同;' – stefaanv 2014-11-05 09:14:48
關於strtol需要5到6秒鐘,你可以給我們提供一個工作示例顯示這一點。這將有助於發現問題。 – stefaanv 2014-11-05 09:17:34
你到底想幹什麼?顯示沒有0x前綴的數組? – 2014-11-05 07:23:15
這是爲你編譯的嗎?當'ex'是一個數組時,將'&ex'作爲第二個參數傳遞是沒有意義的。 – Blastfurnace 2014-11-05 07:24:31
噢,對不起,是'PCHAR EX = 「\ X55 \ XEC」;' 所以我想要做的是:沒有\ X 所以這將是輸入十六進制字符:'PCHAR EX = 「55 EC」 ' 之後使用strtol的alt將它改爲'\ x55 \ xEC' – Frought 2014-11-05 09:45:21