Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C++;_C++_Hex - Fatal编程技术网

C++ 如何在C++;

C++ 如何在C++;,c++,hex,C++,Hex,我正在学习一个加密类,其中一个作业要求我们对一组十六进制密文进行异或运算,并试图找到加密的消息 我知道可以在int或long前面加上“0x”来保存变量中的十六进制值,但如果我的消息这么长怎么办: 271946F9BBB2AEADEC11841A81ABC300ECAA01BD8069D5CC91005E9FE4AAD6E04D513E96D99DE2569BC5E5E5E5E5E5E5E5E5E5E5E5E5E5E7E5E5E7E7E7E7E7E7E7E7E6B6F6F5F537D0A7D7D7

我正在学习一个加密类,其中一个作业要求我们对一组十六进制密文进行异或运算,并试图找到加密的消息

我知道可以在int或long前面加上“0x”来保存变量中的十六进制值,但如果我的消息这么长怎么办:

271946F9BBB2AEADEC11841A81ABC300ECAA01BD8069D5CC91005E9FE4AAD6E04D513E96D99DE2569BC5E5E5E5E5E5E5E5E5E5E5E5E5E5E7E5E5E7E7E7E7E7E7E7E7E6B6F6F5F537D0A7D7D7D7D6D8D8D7D8D7D8D7D7D8D8D7D8F7D8D8D7D8D8D8D8F8F8F8F8F8F8F8F8F8F8F8F8F8F0F8F0F0F8F0F0F0F0F0F0F8F8F8F0F8F0F0F

我会得到一个溢出。有没有办法将整个消息放入一个变量中?我可以将消息拆分为子部分,但我更希望它是可变的,而不是多个(如果可能的话)。我试图使用字符串来保持按摩,但如何使用运算符“^”来表示xor

还是有一种我不知道的更简单的技术


谢谢

把它放在一个单独的文本文件中

将文件读入缓冲区


将ascii字符转换为十六进制值

将其放在单独的文本文件中

将文件读入缓冲区


将ascii字符转换为十六进制值

对于类似的内容,通常使用字符串或
向量
来保存数据。不能将整个字符串/向量用作
^
的操作数,但可以一次应用一个字节


如果您想简化代码的其余部分,可以创建一个重载
operator^
的类来执行字节XOR,这样您的代码看起来就像
result=key^message

对于类似的内容,通常使用字符串或
向量来保存数据。不能将整个字符串/向量用作
^
的操作数,但可以一次应用一个字节


如果您想简化代码的其余部分,可以创建一个重载
operator^
的类来执行字节XOR,这样您的代码看起来就像
result=key^message

您可以使用任意大小的整数数组,并将运算符一次应用于一个元素(这可能比字符数组更有效)@JerryCoffin的想法是将其包装在一个类中,并使用重载运算符,这是一个好主意,不管您使用的是什么实际表示。

您可以使用任意大小的整数数组,并将运算符一次应用于一个元素(这可能比字符数组更有效)@JerryCoffin的想法是将它包装在一个带有重载运算符的类中,这是一个好主意,不管您使用的是什么实际表示。

Jerry和Scott有很好的建议。另一种选择是使用现有的库:例如,GNU GMP任意精度数学库at,它支持XOR(请参阅)和“scanf”风格的函数以十六进制读取(请参阅),并明确旨在为加密提供出色的支持。

Jerry&Scott有很好的建议。另一种选择是使用现有的库:例如,GNU GMP任意精度数学库at,它支持XOR(请参阅)和“scanf”风格的函数以十六进制(请参阅)读取,并明确旨在为加密提供出色的支持。

十六进制与任何整数都没有区别。据我所知,目前编译器支持的最大整数类型是64位。所以不能使用一个整型变量。十六进制与任何整型变量都一样。据我所知,目前编译器支持的最大整数类型是64位。所以你不能用一个整型变量,但是我该如何把msg输入到向量中呢?在cplusplus.com中,我需要做如下操作:“it=myvector.end();it=myvector.insert(it,msg_byte);',但我需要先将msg存储到某个变量中。我该怎么做呢?如果你使用
std::string
,那么你可以使用
If(std::cin>>my_string)/*使用它*/else/*抱怨*/
。如果您创建自己的类,您可以有一个
std::istream&operator>>(std::istream&is,class\u Name&x){return is>>x。字符串}
,但是如何将消息输入到向量中呢?在cplusplus.com中,我需要做如下操作:“it=myvector.end();it=myvector.insert(it,msg_byte);',但我需要先将msg存储到某个变量中。我该怎么做呢?如果你使用
std::string
,那么你可以使用
If(std::cin>>my_string)/*使用它*/else/*抱怨*/
。如果创建自己的类,则可以有一个
std::istream&operator>>(std::istream&is,class\u Name&x){return is>>x