草庐IT

$二进制

全部标签

c++ - 十六进制字符到 std::string 的 constexpr 转换

我有很多这样的字符串:"343536"_hex我想将其转换成相应的字节串。我正在使用C++11并定义了一个用户定义的字符串文字以将它们转换为十六进制字符串。但是,我目前拥有的转换不能作为我正在寻找的constexpr进行评估。特别是我想使用这样的东西,但作为constexpr:std::stringoperator""_hex(constchar*s,std::size_tslen){std::stringstr;str.reserve(slen);charch[3];unsignedlongnum;ch[2]='\0';for(;slen;slen-=2,s+=2){ch[0]=s[

c++ - 找到与另一个二进制模式匹配的所有 2 位值,然后将它们相加

第一个值:我有一个二进制值,它实际上是一个紧凑的2位值序列。(也就是说,二进制值中的每2位代表0、1、2或3。)因此,例如0、3、1、2变为00110110。在这个二进制字符串中,我只关心3(或者,我可以翻转位,只关心0,如果这样可以让你的回答更容易的话)。所有其他数字都无关紧要(我们稍后会讨论原因)。第二个值:我有第二个二进制值,它也是一个压缩的2位值系列,以相同的方式表示。它与第一个值的长度相同。数学:我想要第二个值中与第一个值中的3具有相同位置的2位数字的总和。换句话说,如果我有:First:11000011Second:01111101然后我的答案将是“2”(我将“第二”中的第

c++ - qDebug - 如何以位输出数据(二进制格式)

qDebug()可以输出二进制格式的数据吗?例如,我想检查一些状态变化:unsignedcharstatus;...qDebug()我想生成二进制格式的输出,类似于:Status:1011 最佳答案 如果你想以二进制打印,你可以使用:binunsignedcharstatus=11;qDebug()QString::number()unsignedcharstatus=11;qDebug()QString::arg()unsignedcharstatus=11;//toprintasstringwith8characterspadd

c++ - 在 C/C++ 中解析二进制消息流

我正在为二进制协议(protocol)(JavadGRIL协议(protocol))编写解码器。它由大约一百条消息组成,数据格式如下:structMsgData{uint8_tnum;floatx,y,z;uint8_televation;...};这些字段是ANSI编码的二进制数字,它们彼此紧随其后,没有间隙。解析此类消息的最简单方法是将输入的字节数组转换为适当的类型。问题是流中的数据是打包的,即未对齐。在x86上,这可以通过使用#pragmapack(1)来解决。但是,这在其他一些平台上不起作用,或者由于进一步处理未对齐的数据而导致性能开销。另一种方法是为每种消息类型编写一个特定的

c++ - 将二进制编码的十进制 (BCD) 解码为无符号整数

在我的项目中使用的值是用4位二进制编码的十进制数(BCD)表示的,它最初存储在一个字符缓冲区中(例如,由指针指向constunsignedchar*).我想将输入的BCD字符流转换为整数。你能告诉我一个有效和快速的方法吗?数据格式示例和预期结果:BCD*2;1001011101100101=9765"9""7""6""5"非常感谢! 最佳答案 unsignedintlulz(unsignedcharconst*nybbles,size_tlength){unsignedintresult(0);while(length--){res

C++:将读取的二进制文件存储到缓冲区中

我正在尝试读取二进制文件并将其存储在缓冲区中。问题是,二进制文件中有多个以null结尾的字符,但它们不在末尾,而是在其他二进制文本之前,所以如果我将文本存储在'\0'之后,它只会将其删除缓冲区。例子:char*a="thisisa\0test";cout这只会输出:thisisa这是我的真实代码:这个函数读取一个字符boolCStream::Read(int*_OutChar){if(!bInitialized)returnfalse;intiReturn=0;*_OutChar=fgetc(pFile);if(*_OutChar==EOF)returnfalse;returntrue

c++ - 如何从二进制文件中写入/读取特征矩阵

要将Eigen::Matrix写入文件,我真的很喜欢使用以下内容:typedefEigen::MatrixMatrix_MxN;Matrix_MxNJ=Matrix_MxN::Zeros(10,10);std::ofstream("matrix.txt")但不幸的是,没有定义可以做相反事情的东西:std::ifstream("matrix.txt")>>J;为了避免这个问题,如何将Eigen::Matrix读/写到二进制文件? 最佳答案 您可以定义这些方法:namespaceEigen{templatevoidwrite_binar

c++ - 我在哪里可以找到所有 C++ 十进制类型指示器?

我在哪里可以找到所有的C++十进制类型指示符,例如longl=0L;我也认识LUfd。还有其他的吗?我在哪里可以找到它们?如何明确指示未签名的short? 最佳答案 您提到的这个指标称为后缀。对于整数类型,有两种类型的后缀:unsigned-suffix—字符u或字符Ulong-suffix—字符l或字符L或long-long-suffix—字符序列ll或字符序列LL。对于整数文字,您可以组合这些后缀,例如ul或ull以在同一文字中同时实现“unsignednes”和“longness”。浮点类型也有后缀:f、F、l或L之一没有后缀

c++ - 如何使用 boost::format 生成十六进制输出?

考虑以下几点:#include#include#include#include#include#include#includeusingnamespacestd;typedefunsignedcharbyte;typedefvectorbyte_array;constbyte_arraybytes=list_of(0x05)(0x04)(0xAA)(0x0F)(0x0D);intmain(){conststringformatter="%1%-%2%-%3%-%4%-%5%";conststringresult=(format(formatter)%bytes[0]%bytes[1]%

c++ - 从 Dukascopy tick 二进制文件中读取数据

我已经下载了Dukascopy报价数据,并使用eaylzma库对其进行了解压。原始压缩二进制文件为EURUSD/2010/00/08/12h_ticks.bi5(EURUSD/2010/ian/8/12h)解压后得到如下格式:+-------------------------+--------+-------+|time|Bid|Ask|+-------------------------+--------+-------+000003CA00022EC000022EB640CCCCCD41180000000004F500022EB600022EB14099999A404CCCCD(