C++ 用C+;中的十六进制值初始化无符号字符数组+;

C++ 用C+;中的十六进制值初始化无符号字符数组+;,c++,arrays,hex,unsigned-char,C++,Arrays,Hex,Unsigned Char,我想用16个十六进制值初始化一个无符号字符数组。但是,我似乎不知道如何正确初始化/访问这些值。当我试图直观地访问它们时,我没有得到任何价值 这是我的输出 The program was run with the following command: 4 Please be a value! -----> p Here's some plaintext 使用以下代码运行时- int main(int argc, char** argv) { int n; if (argc >

我想用16个十六进制值初始化一个无符号字符数组。但是,我似乎不知道如何正确初始化/访问这些值。当我试图直观地访问它们时,我没有得到任何价值

这是我的输出

The program was run with the following command: 4
Please be a value! -----> p
Here's some plaintext 
使用以下代码运行时-

int main(int argc, char** argv)
{
  int n;
  if (argc > 1) {
    n = std::stof(argv[1]);
  } else {
    std::cerr << "Not enough arguments\n";
    return 1;
  }

  char buff[100];
  sprintf(buff,"The program was run with the following command: %d",n);
  std::cout << buff << std::endl;

unsigned char plaintext[16] = 
   {0x0f, 0xb0, 0xc0, 0x0f,
    0xa0, 0xa0, 0xa0, 0xa0,
    0x00, 0x00, 0xa0, 0xa0,
    0x00, 0x00, 0x00, 0x00};

unsigned char test = plaintext[1]^plaintext[2];

std::cout << "Please be a value! -----> " << test << std::endl;

std::cout << "Here's some plaintext " << plaintext[3] << std::endl;

  return 0;
}
int main(int argc,char**argv)
{
int n;
如果(argc>1){
n=std::stof(argv[1]);
}否则{
我认为(你问什么还不完全清楚)答案就这么简单

std::cout << "Please be a value! -----> " << static_cast<unsigned>(test) << std::endl;

std::coutA
char
是一个8位值,能够存储-128
std::cout
std::cin
始终将char变量视为char
如果您想输入或输出为int,您必须像下面这样手动执行

std::cin >> int_var; c = int_var;
std::cout << (int)c;
std::cin>>int\u var;c=int\u var;

std::cout那么问题出在哪里呢?使用casting将您的字符输入转换为usnsigned char..使用
cout
打印
unsigned char
默认情况下打印ASCII字符。如果您只想打印值,请执行以下操作:
std::cout
std::stof
将字符串转换为浮点值。您的意思是
std::stod
?字符
当然可以存储0到127之间的值。其他任何内容都是实现定义的。
std::cout << "The program was run with the following command: " << n << std::endl;
char c = 'z';
char d = 122;
char e = 0x7A;
char f = '\x7a';
std::cout << c << d << e << f << "\n";
char n = 8;
std::cout << n << endl;
char n = 8;  // stores the value 8
char n = a;  // what does this store?
char n = '8'; // why is this different than the first line?
int incoming = 5000;
int outgoing = 4000;
char percent = char(outgoing * 100 / incoming);
std::cout << (unsigned int)test << "\n";
std::cout << unsigned int(test) << "\n";
std::cout << static_cast<unsigned int>(test) << "\n";
std::cin >> int_var; c = int_var;
std::cout << (int)c;