我有一個std::string
代表小端,十六進制形式的64位內存地址。如何將其轉換爲uint64_t
表示?如何將64位地址的std :: string表示形式轉換爲uint64_t?
4
A
回答
3
#include <sstream>
#include <string>
#include <iostream>
#include <iomanip>
#include <cstdint>
int main()
{
std::string s("0x12345");
std::stringstream strm(s);
std::uint64_t n;
strm >> std::hex >> n;
std::cout << std::hex << n << std::endl;
return 0;
}
按預期打印12345
。
編輯:如果你想從little-endian的以大端轉換,這也是有可能的:?你如何獲得一個unsigned long出字符串]
#include <sstream>
#include <string>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cstdint>
int main()
{
std::string s("0x12345");
std::stringstream strm(s);
union {
std::uint64_t n;
std::uint8_t a[8];
} u;
strm >> std::hex >> u.n;
std::reverse(u.a, u.a + 8);
std::cout << std::hex << std::setfill('0') << std::setw(16) << u.n << std::endl;
return 0;
}
的
+0
但字符串是小尾數,十六進制形式。例如,內存地址0x400678表示爲「7806400000000000」。 – RouteMapper
+1
@RouteMapper然後在轉換後交換字節。 – 2013-07-15 19:16:30
+0
是否有從uint64_t類型交換字節的衆所周知的功能? – RouteMapper
相關問題
- 1. 將uint64_t轉換爲std :: string
- 2. 如何將System :: String ^轉換爲std :: string?
- 3. 將std :: __ cxx11 :: string轉換爲std :: string
- 4. 如何將unicode QString轉換爲std :: string?
- 5. 如何將char []轉換爲std :: string
- 6. 如何將wchar_t *轉換爲std :: string? ?
- 7. 如何將std :: string轉換爲LPCSTR?
- 8. 如何將Glib :: ustring轉換爲std :: string?
- 9. 將NSString轉換爲std :: string
- 10. 將std :: string轉換爲QString
- 11. 將std :: string轉換爲QwtText
- 12. 將void *轉換爲std :: string
- 13. 將std :: string轉換爲char
- 14. 將std :: string轉換爲basic_ostream?
- 15. 如何將std :: string指針轉換爲std :: string
- 16. 如何將二進制64位字符串轉換爲C++中的uint64_t?
- 17. 將此網址轉換爲64基地
- 18. C++/CX:將std :: string轉換爲Platform :: String^
- 19. 將std :: ostream轉換爲std :: string
- 20. 如何將無符號轉換爲uint64_t?
- 21. 將uint64_t轉換爲uint8_t [8]
- 22. 如何將64位COFF轉換爲OMF?
- 23. 將奇怪的std :: string轉換爲NSString
- 24. 如何在C++中將std :: string轉換爲CV :: String?
- 25. 如何將UTF-8 std :: string轉換爲UTF-16 std :: wstring?
- 26. 如何轉換爲std :: string到in_port_t
- 27. 如何從std :: string轉換爲SQLWCHAR *
- 28. 無法將參數2從'std :: string *'轉換爲'std :: string'
- 29. 將std :: string轉換爲MSVC特定__int64
- 30. 將void *(char * without \ 0)轉換爲std :: string
可能重複( http://stackoverflow.com/questions/1484140/how-do-you-get-an-unsigned-long-out-of-a-string) –
另請參閱http://stackoverflow.com/questions/5117844/c -string-streams –
「小端,十六進制」究竟是什麼意思?在16位中,數字「0x1234」是由字符串「」4321「」還是「」3412「」表示的?(即它是字節式還是十六進制數字小端)? –