草庐IT

八进制

全部标签

c++ - qDatastream中的Qt二进制读取错误

我正在读取一个由传感器生成的二进制文件。我在读取不同精度(32或64)的float时遇到问题。我可以在MATLAB(64位版本)中阅读它们,但Qt(Windows上的32位版本)给出了错误的值。我可以读到dtmth(请引用下面的结构)。之后,我得到了baseline的值Inf。这个值实际上是0。如您所见,我更改了MSB(LittleEndian)。如果我保留BigEndian,我会得到0作为基线,但其他值是错误的。我的桌面是64位的。我检查了字节数,它们是正确的。我认为问题是机器精度。QDataStreamin(&file);in.setByteOrder(QDataStream::L

c++ - VS2010 和 VS2012 之间的二进制 C++ 库兼容性?

我对VS2010和VS2012之间编译库的二进制兼容性感到困惑。我想迁移到VS2012,但是许多闭源二进制SDK仅适用于VS2010,例如用于连接硬件设备的SDK。传统上,据我所知,VisualStudio对编译器版本非常挑剔,在VS2010中,您无法链接到为VS2008编译的库。我现在感到困惑的原因是,我正在迁移到VS2012,我已经尝试了几个项目,令我最惊讶的是,他们中的许多人都可以毫无问题地跨版本工作。注意:我不是在谈论v100模式,据我所知,它只是VS2010编译引擎之上的VS2012GUI。我说的是在VS2012中打开一个VS2010的解决方案,点击更新,看看会发生什么。当链

WSAsend 数据包的 C++ 奇怪十六进制转储

http://prntscr.com/2ctnoz我正在HookWSAsend函数并转储数据包。ASCII转储有效,但HEX转储有时会显示您在屏幕上看到的内容(FFFFFFDD),知道为什么吗?代码:intWINAPImyWSASend(SOCKETs,LPWSABUFlpBuffers,DWORDdwBufferCount,LPDWORDlpNumberOfBytesSent,DWORDdwFlags,LPWSAOVERLAPPEDlpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine){//PacketL

c++ - 罗马数转十进制数,获取垃圾值

我必须创建一个程序来将罗马数字转换为十进制数字,我得到的输出是垃圾值。事实上,我已经仔细检查了我的逻辑,它似乎是正确的。我该如何纠正?这是我的代码:#include#includeusingnamespacestd;classRomanType{charstr[10];intd;public:voidaccept(){cout>str;convert(str);}voidconvert(charstr1[10]){intj=0;for(j=0;j 最佳答案 几点:不要直接跳转到解析高值(value)罗马字。仅从I、V和X开始(即首先

c++ - 如何使用 pin 工具跟踪二进制检测中的特定循环?

我刚开始使用intelpin工具,想跟踪二进制文件中的某个循环,但是我发现每次运行时指令的地址在每次运行中都发生了变化,我该如何找到特定的指令或特定的循环,即使它在每次运行中都发生变化?编辑0:我有以下地址,其中一个是RVA:(地址的第一部分(小地址)对于每次运行都是不变的,但是每次运行都会更改最后一部分(大地址)地址loop_repeationNo._of_Instruction_In_Loop419594218419597213...............14051305256648012............ 最佳答案 t

c++ - 有没有办法将表示为字符串的数字转换为其二进制等价物?

所需代码的外壳:#include#includestd::stringstr_to_bin(conststd::string&str){//...}intmain(){std::stringstr="123";std::cout问题标题说明了一切。我已经坚持了一段时间。在STL中有解决方案吗?还是我缺少的简单东西?如果没有,我将如何去做呢?也许你可以指出我的方向?另外,速度也很重要。编辑:数字可以是任意大小(也可以大于longlong),所以std::stoi和std::bitset不在讨论范围内。 最佳答案 您可以使用GMP(GN

c++ - 用 C++ 签名的十进制到二进制

这是我的:stringdecimal_to_binary(intn){stringresult="";while(n>0){result=string(1,(char)(n%2+48))+result;n=n/2;}returnresult;}这行得通,但如果我输入负数就不行了,有什么帮助吗? 最佳答案 只是#include然后使用bitset和to_string将int转成stringstd::cout(n).to_string();它也适用于负数。 关于c++-用C++签名的十进制到

c++ - 在 C++ 中解析混合二进制数据

我有一大堆数据正在解析。它具有混合数据类型,一些double后跟一些float。这就是我将double解析为vector的方式。如果有更好的方法来做到这一点,我只是想得到一些反馈。我觉得可能有一种方法可以更简洁地做到这一点。BlobData::MyDoublesisavector;BlobData::MyDoublesMyClass::GetDataPointsFromBlob(consttext*blob,constintnumDoubles){BlobData::MyDoubles::value_type*doubles=newBlobData::MyDoubles::value_

c++ - 在 C++ 中将二进制数据写入 fstream

问题我有一些结构要写入二进制文件。它们由来自cstdint的整数组成,例如uint64_t.有没有办法将它们写入二进制文件,而不需要我手动将它们拆分为char的数组?并使用fstream.write()函数?我尝试过的我天真的想法是,c++会弄清楚我有一个二进制模式的文件和会将整数写入该二进制文件。所以我尝试了这个:#include#include#includeusingnamespacestd;intmain(){fstreamfile;uint64_tmyuint=0xFFFF;file.open("test.bin",ios::app|ios::binary);file但是,这

c++ - 在彼此非常接近的范围内混合二进制数据和指令是否有缓存惩罚?

我在程序上生成128字节的block,其中包含一些为机器语言函数保留的n字节header,我只是通过内联汇编调用这些函数。它们没有在任何地方定义,而是在运行时生成到分配到内存中的页面中,可以访问执行。但是,我想保留这些block的末尾(128-n)字节用于存储在这些函数中使用的数据,因为能够将内存偏移调用缩小到8位而不是32位,并且(可能?)帮助缓存。但是,我担心的是缓存。假设我有一个处理器,它既有数据缓存又有指令缓存,这种典型的处理器处理这种格式的效果如何?它会尝试在我的指令之后将数据作为指令本身加载到指令缓存中吗?这是否会导致显着的性能损失,因为处理器试图弄清楚如何处理这些垃圾和可