草庐IT

signed-ness

全部标签

c++ - 将 TSA 的响应添加到 CryptSignMessage 的 CRYPT_SIGN_MESSAGE_PARA(c++,Crypto Api)

我正在纠结如何将来自TSA服务器的响应添加到我的CryptSignMessage?使用PKCS#7。我目前有我的消息摘要,并且我使用来自cryptoapi的CryptSignMessage成功地对其进行了签名。像这样://Initializethesignaturestructure.CRYPT_SIGN_MESSAGE_PARASigParams;SigParams.cbSize=sizeof(CRYPT_SIGN_MESSAGE_PARA);SigParams.dwMsgEncodingType=MY_ENCODING_TYPE;SigParams.pSigningCert=hCo

c++ - _InterlockedCompareExchange 文档中 "The sign is ignored"的含义

_InterlockedCompareExchange的文档对每个参数说Thesignisignored.这是否意味着像0xffff和0x7fff(对于16位版本)这样的数字将被_InterlockedCompareExchange16等视为相等其他宽度内在函数?或者这是否意味着内在函数接受有符号和无符号整数?还是别的?如果这不是文档中的错误,它至少看起来是模棱两可的。 最佳答案 符号位不会被忽略,就像其他位一样进行比较。..CompareExchange..函数只关心位的相等性,不以任何特殊方式解释它们。在基于x86的系统上,它们

c++ - 在 C++ 中添加 const-ness

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Istheresomeninjatricktomakeavariableconstantafteritsdeclaration?考虑以下最小示例:voidMutateData(std::string&);intmain(){std::stringdata="somethingthatmakessensetohumans.";::MutateData(data);//Mutates'data'--e.g.,onlychangestheorderofthecharacters.//Atthispoint,'dat

c++ - 使用 a<32> 将 bitset<a> 转换为 signed int

我正在阅读问题convertbitsettointinc++然后想,嘿,那行不通,我已经试过了。但后来我开始尝试并很快发现:#include#includeintmain(){std::bitsetb31(-1);std::bitsetb32(-1);std::cout(b31.to_ulong())(b32.to_ulong())给出输出2147483647-1那么,如何将小于32的位集转换为有符号整数?澄清:我想使用在构造保留的位集时使用的10基值转换回signedint。“将带符号的整数存储在位集中”我已经在win7上用gcc4.6.2和mingw32试过了,用c风格的转换(in

c++ - 非成员函数 begin()/cbegin() 及其constexpr-ness

C++11引入了没有constexpr-说明符的std::begin()非成员函数,然后C++14更新为constexpr-std::begin()用于数组类型(T(&)[N])并附加constexpr-std::cbegin()用于通用容器类型(constC&).引自http://en.cppreference.com/w/cpp/iterator/begintemplateconstexprT*begin(T(&array)[N]);//(sinceC++14)templateconstexprautocbegin(constC&c)->decltype(std::begin(c)

c++ - boost::lexical_cast<signed char> 无法处理负数?

这个简短的C++程序的行为方式让我感到困惑:#include#include#include#includeintmain(void){signedcharc=-2;assert(c==-2);c=boost::lexical_cast(std::string("-2"));std::cout使用g++5.2.1和boost-1.58.0,我得到:terminatecalledafterthrowinganinstanceof'boost::exception_detail::clone_impl>'what():badlexicalcast:sourcetypevaluecouldn

c++ - 将 unsigned long long 与 signed long long 结果相减?

假设我有这两种类型:typedefunsignedlonglonguint64;typedefsignedlonglongsint64;我有这些变量:uint64a=...;uint64b=...;sint64c;我想从a中减去b并将结果赋给c,很明显,如果差值的绝对值大于2^63,那么它将换行(或未定义),这是可以的。但是对于绝对差小于2^63的情况,我希望结果是正确的。以下三种方式:c=a-b;//signconversionwarningignoredc=sint64(a-b);c=sint64(a)-sint64(b);其中哪些可以保证按标准工作?(以及为什么/如何?)

c++ - 使用 SFINAE 检测 C++ 中类型的 POD-ness

这里的原标题是解决VS2005C++中SFINAE错误的方法这是尝试性地使用SFINAE来为TR1中存在的is_pod模板类创建等效项(在VS2005中还没有TR1)。当模板参数是POD类型(包括基本类型和由它们构成的结构)时,它的value成员应该是true,如果不是(就像非平凡的构造函数),它应该是false。templateclassis_pod{public:typedefcharYes;typedefstruct{chara[2];}No;templatestaticYestest(int){union{TvalidPodType;}u;}templatestaticNote

c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

我正在处理一些嵌入式代码,并且正在从头开始编写一些新东西,因此我更愿意坚持使用uint8_t、int8_t等类型。然而,当移植一个函数时:voidfunctionName(char*data)到:voidfunctionName(int8_t*data)在将文字字符串传递给函数时,我收到编译器警告“在指向具有不同符号的整数类型的指针之间转换”。(即调用functionName("putthistextin");时)。现在,我明白了为什么会发生这种情况,并且这些行只是调试,但我想知道人们认为什么是最合适的处理方式,而不是对每个文字字符串进行类型转换。在实践中,我不认为一揽子类型转换比使用

c++ - unsigned-signed 下溢机制

我知道以下内容unsignedshortb=-5u;由于下溢,评估为b为65531,但我不明白5u在转换为-5之前是否转换为带符号的int,然后重新转换回无符号以存储在b中,或者-5u是等于0-5u(不应该这样,-x是一元运算符) 最佳答案 5u是一个文字无符号整数,-5u是它的否定。无符号整数的否定定义为从2**n中减去,得到相同的结果包装从零减去的结果。 关于c++-unsigned-signed下溢机制,我们在StackOverflow上找到一个类似的问题: