如果我将此作为内存的指针作为短裤的指针:

unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);

我知道ms的大小(此短裤的数量),我希望了解所有这些短裤及其二进制表示形式。

如何在C++中访问每个short的位?

最佳答案

cout << "\t" << dec << x << "\t\t Decimal" << endl;
cout << "\t" << oct << x << "\t\t Octal" << endl;
cout << "\t" << hex << x << "\t\t Hex" << endl;
cout << "\t" << bitset<MAX_BITS>(x) << endl;

尝试通过位集

编辑(添加代码)
#include <iostream>
#include <bitset>
using namespace std;

int main( int argc, char* argv[] )
{
  unsigned short _memory[] = {0x1000,0x0010,0x0001};
  unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);
  for(unsigned short* iter = ms; iter != ms + 3/*number_of_shorts*/; ++iter )
  {
    bitset<16> bits(*iter);
    cout << bits << endl;
    for(size_t i = 0; i<16; i++)
    {
      cout << "Bit[" << i << "]=" << bits[i] << endl;
    }
    cout << endl;
  }
}

要么
#include <iostream>
#include <algorithm>
#include <bitset>
#include <iterator>

int main( int argc, char* argv[] )
{
    unsigned short _memory[] = {0x1000,0x0010,0x0001};
    unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);
    unsigned int num_of_ushorts = 3;//

    std::copy(ms, ms+num_of_ushorts, ostream_iterator<bitset<16>>(cout, " "));
}

10-04 15:03