我有一個 64 位無符號整數,出于某種原因,我必須將它存盤在一個字串中。我想知道的是,即使在使用交換的整數之后,字串中的值也是相同的?
例如:
#include <iostream>
#include <byteswap.h>
using namespace std;
int main()
{
uint64_t foo = 98;
uint64_t foo_reversed = bswap_64(foo);
std::string out = "";
out.append(reinterpret_cast<const char*>(&foo), sizeof(foo));
std::string out_reversed = "";
out_reversed.append(reinterpret_cast<const char*>(&foo_reversed), sizeof(foo_reversed));
std::cout << "out: " << out << std::endl;
std::cout << "out_reversed: " << out_reversed << std::endl;
return 0;
}
字串out
和out_reversed
具有完全相同的值,但我希望它與基礎整數不同foo
并且foo_reversed
彼此交換值。
我在這里想念什么?如果這是一個微不足道的錯誤,請原諒我,但把它放在這里是因為我錯過了一些概念。
我看到的輸出:
out: b
out_reversed: b
我沒想到上面的值out_reversed
uj5u.com熱心網友回復:
您可以使用以下陣列看到相同的內容char
:
int main()
{
char foo[8] = { 98, 0, 0, 0, 0, 0, 0, 0 };
char foo_reversed[8] = { 0, 0, 0, 0, 0, 0, 0, 98 };
std::string out(foo, 8);
std::string out_reversed(foo_reversed, 8);
std::cout << "out: " << out << std::endl;
std::cout << "out_reversed: " << out_reversed << std::endl;
return 0;
}
值為 0的char
s 不可列印,因此終端不會顯示它們
這是另一種印刷方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448816.html
下一篇:考慮位置,比較2個字串中的字符