我有一個電話號碼錶示爲:AA A3 AA A1 A3 A7 A9 A7 A4 A9
,我想將它轉換爲正常數字:0301379749
?將奇怪的十六進制電話號碼轉換爲正常數字
1
A
回答
4
int main()
{
std::string str = "\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9";
for(unsigned i = 0; i < str.size(); i++)
{
if(str[i] == '\xAA') str[i] = '\x00';
str[i] = (str[i]&'\x0F') + '0';
}
//or
std::for_each(str.begin(), str.end(), [](char &c)
{
if(c == '\xAA') c = '\x00';
c = (c&'\x0F') + '0';
});
cout << str << endl;
return 0;
}
+0
這正是我所期待的 – Merni 2011-04-27 09:15:26
2
您的數字似乎被0xA0偏移,數字「0」表示爲10而不是0(0xA0 + 10 = 0xAA)。
因此,對於每個數字,減去0XA0,再取模10:
const unsigned int digit = (weirdHexValue - 0xA0) % 10;
中借鑑@hidayat一些代碼,下面是如何轉換的例子:
int main()
{
std::string str = "\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9";
std::for_each(str.begin(), str.end(), [](char &c)
{
c = '0' + (c - 0xA0) % 10;
});
cout << str << endl;
return 0;
}
相關問題
- 1. 將數字轉換爲十六進制
- 2. 奇怪的結果轉換十六進制字符串爲int
- 3. 將十進制轉換爲十六進制和十六進制
- 4. 將字符串轉換爲十六進制到十六進制
- 5. 十六進制轉換爲十進制電壓轉換
- 6. 將十六進制轉換爲十進制數字
- 7. 將字符串十進制轉換爲十六進制數
- 8. 將十六進制轉換爲二進制到十六進制?
- 9. 奇怪的警告將VB.NET轉換爲C# - 十六進制常量
- 10. 將字符轉換爲十六進制
- 11. 將十進制數轉換爲二進制/十六進制/八進制符號
- 12. EXC_BAD_ACCESS奇怪的十六進制字符串轉換
- 13. 將十六進制字符串數組轉換爲十六進制數組
- 14. 將八進制數轉換爲十進制和十六進制
- 15. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 16. 將十六進制字符串轉換爲十六進制數據
- 17. 如何將十六進制字符串轉換爲十六進制數
- 18. 將excel中的Unicode十六進制數轉換爲十進制
- 19. 將十六進制從套接字轉換爲十進制
- 20. 如何將十六進制字符串轉換爲十進制?
- 21. 將十六進制字符串轉換爲十進制
- 22. 將4字節十六進制轉換爲十進制值
- 23. VB.Net - 將多字節十六進制值轉換爲十進制
- 24. 將十六進制字符串轉換爲無符號字符[]
- 25. awk命令爲十六進制轉換爲符號十進制
- 26. 如何將十六進制字符串轉換爲十六進制字節?
- 27. PHP將字符串轉換爲十六進制和十六進制字符串
- 28. 轉換十六進制數符號短
- 29. 將表情符號從十六進制代碼轉換爲unicode
- 30. 十六進制()參數不能轉換爲十六進制
AA(16) = A(16)* 16(10)+ A(16)= 10(10)* 16(10)+10(10)= 170(10)等等。 – 2011-04-27 09:11:39
數字是否保存在內存中?如果是這樣,怎麼樣?它是一個char數組/指針嗎?或者你把它保存在一個文件中?或者你應該在提示中輸入數字? – rzetterberg 2011-04-27 09:12:58