【发布时间】:2017-02-16 11:36:28
【问题描述】:
我需要看一下声明的 unsigned char 指针中的内容,我将我的问题简化为这个简短的示例
#include<iostream>
int main (int argc, char *argv[])
{
unsigned char * buffer = new unsigned char;
*buffer = 8;
std::cout << "buffer = " << (unsigned char) (*buffer) << std::endl;
}
我期待这个输出:buffer = 8
但我明白了 缓冲区 =
空白,让我抓狂,甚至没有任何价值!!!
我实际上是如何处理它的:
#include<iostream>
typedef unsigned char uint8_t;
int main (int argc, char *argv[])
{
uint8_t * buffer = new uint8_t ;
*buffer = 8;
std::cout << "buffer = " << (int) (*buffer) << std::endl;
}
我在ns3中使用这个例子,buffer构造了一个单字节的payload包,我需要它是一个指针。 这就是为什么我实际上将我的问题与“C++”一起标记为“C”,因为问题的核心也与 C 相关。但我发现自己被否决了!我知道“cout”和“new”是 c++ 文字,但这与问题无关!!
这一切都没有编码问题,我的问题就是 unsigned char 那么如果它读取为带有 cout 的常规 char !!!!!! p>
我说我希望它是buffer = 8,因为 unsigned char 是一字节整数。
谢谢你们,因为你们让我注意到 cout 正在处理它,就好像它是一个普通的字符一样,尽管它是我所期望的。
【问题讨论】:
-
8 是第 8 个字符,而不是字符 8
-
@mahmoud 你不是
coutingunsigned char指针。修正标题。 -
@LogicStuff:是的。
*buffer是unsigned char,unsigned char) (*buffer)绝对是unsigned char。 -
@barakmanos 不是指针。我应该强调这一点。内存泄漏不应成为此 MCVE 的一部分。
-
@LogicStuff:是的,确实不是指针。
标签: c++