如果我将它作为指向内存的指针作为指向短裤的指针:
unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);
而且我知道 ms 的大小(这条短裤的数量),我希望看到所有这些短裤及其二进制表示形式。
如何在 C++ 中访问每个 short 的位?
最佳答案
要查看类型为T
的任何 变量的二进制表示,您可以这样做:
template <typename T>
void print_raw(const T & x)
{
const unsigned char * const p = reinterpret_cast<const unsigned char *>(&x);
for (std::size_t i = 0; i != sizeof(T); ++i)
{
if (i != 0) std::putchar(' ');
std::printf("%02X", p[i]);
}
}
您可以将其插入您的短裤列表。
(您甚至可以通过两次查找索引 p[i]/16
和 p[i] % 16
来替换 printf
> 使用合适的字母表:
static const char alphabet = "01234567890ABCDEF";
std::putchar(alphabet[p[i] / 16]);
std::putchar(alphabet[p[i] % 16]);
或者用真正的二进制打印机替换它:
void print_byte(unsigned char b)
{
for (std::size_t i = CHAR_BIT; i != 0; --i)
{
std::putchar(b & (1u << (i-1)) ? '1' : '0');
}
}
您可以将其链接到前一个循环而不是两个 printf
调用。)
关于c++ - 如何查看空头的位表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142884/