相关疑难解决方法(0)

C++读取二进制文件

我想了解如何在 C++ 中读取二进制文件。\n我的代码:

\n\n
int main() {\n    ifstream ifd("input.png",ios::binary |ios::ate);\n    int size = ifd.tellg();\n    ifd.seekg(0,  ios::beg);\n    vector<char> buffer;\n    buffer.reserve(size);\n    ifd.read(buffer.data(), size);\n\n    cout << buffer.data();\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我认为如果我计算缓冲区,我会得到二进制结果,但事实并非如此。

\n\n

My output is: \xcb\x99\xc5\x98\xcb\x99\xc3\xa16Exif

\n\n

如果我读取文本文件,它会以正常形式而不是二进制形式显示文本。显然我的逻辑不正确。\n我如何将文件读取到缓冲区,以便它包含二进制值?\nP.s. 我这样做是为了实现 Shannon-Fano 算法,因此如果有人对读取二进制文件有任何建议,我将不胜感激。

\n

c++ binary file

3
推荐指数
1
解决办法
2万
查看次数

如何在C++中的字符串中每N个字符插入一个字符

我怎样才能插入字符 ACTER成字符串 1个字符后到底是什么?

我需要插入'|' 在每个其他角色之后进入字符串.

换句话说(C++):"Tokens all around!"
变成:( "T|o|k|e|n|s| |a|l|l| |a|r|o|u|n|d|!"不,那不是数组)

谢谢

c++ string tokenize

2
推荐指数
1
解决办法
5500
查看次数

无符号整数中的C++按位补码返回负值

我只是尝试使用~运算符在C++中进行按位补码:

例如:

NOT 0101
--------
    1010
Run Code Online (Sandbox Code Playgroud)

所以在下面的代码中,我期待得到1010但我得到负数.虽然我用unsigned类型定义值,但是怎么可能?

#include <iostream>
#include <stdio.h>
#include <string>
#include <bitset>
using namespace std;

int tob(int num) {
    if (num == 0)
        return 0;
    return (num % 2) + 10*tob(num/2);
}

long unsigned int tol(string st) {
    long unsigned int num = bitset<100>(st).to_ulong();
    return num;
}


int main()
{
    unsigned int x = tol("0101");
    unsigned int z = ~x;
    printf("%10d (decimal %u)\n", tob(z), z);
    // -110 (decimal -6)
    cout << …
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation bitwise-operators bitset long-integer

1
推荐指数
1
解决办法
2705
查看次数

std::make_unsigned 没有给出预期的结果

我有这样的事情:

template<class T>
class SomeClass {
public:
    typedef std::make_unsigned<T> unsigned_t;
    unsigned_t maxBinBitRep_ { - 1 };    
};

int main() {
    // Okay prints out 255 as expected.
    SomeClass<unsigned char>  unsignedChar;  // unsigned version
    // New to `make_unsigned<>` but should print 255.
    //std::cout << unsignedChar.maxBinBitRep << std::endl; 

    // Should be printing the same as above however it's printing: 4294967295
    SomeClass<char> signedChar;
    // same as above.
    //std::cout << signedChar.maxBinBitRep << std::endl; // signed version


    std::cout << "/nPress any key and enter to …
Run Code Online (Sandbox Code Playgroud)

c++ unsigned templates

0
推荐指数
1
解决办法
921
查看次数

如何在计算机内存中打印long double的二进制表示?

long double出于某些原因,我必须打印数字的二进制表示.我想看到它保留在计算机内存中的确切格式.

我经历了以下问题,其中一个union是解决方案.因为float,备用数据类型unsigned int都是32位.因为double,unsigned long int两者都是64位.但是long double,它是96位/ 128位(取决于平台),它没有类似的等效内存消费者.那么,解决方案是什么?

访问量问题:

  1. 用C++打印浮点数的二进制表示
  2. 二进制的二进制表示
  3. 双精确二进制表示
  4. 如何显示float或double的二进制表示?

注意:

它被标记为问题的副本如何打印(使用cout)数字存储在内存中的方式?!

真的是吗?提到的问题是关于整数的问题和接受的解决方案,它bitset只是截断了浮点部分.我的主要观点是浮点表示,它与该问题的内容无关.

c++ floating-point binary long-double

-1
推荐指数
1
解决办法
794
查看次数

C++如何将int输出为32位二进制文​​件?

我想输出一个int32位二进制格式.循环和转移我唯一的选择?

c++ binary iostream outputstream c++11

-2
推荐指数
1
解决办法
1397
查看次数