标签: binary

C++读取二进制数据到struct

我正在阅读一个二进制文件,我知道它的结构,我试图放入一个结构但是当我来读取二进制文件时,我发现当它单独打印出结构时,它似乎正确但是然后在第四次阅读时,它似乎将它添加到上次读取的最后一个成员.

这里的代码可能比我解释它更有意义:

STRUC

#pragma pack(push, r1, 1)
struct header
{
    char headers[13];
    unsigned int number;
    char date[19];
    char fws[16];
    char collectversion[12];
    unsigned int seiral;
    char gain[12];
    char padding[16];

};
Run Code Online (Sandbox Code Playgroud)

主要

  header head;
  int index = 0;
  fstream data;
  data.open(argv[1], ios::in | ios::binary);
  if(data.fail())
    {
      cout << "Unable to open the data file!!!" << endl;
      cout << "It looks Like Someone Has Deleted the file!"<<endl<<endl<<endl;
      return 0;

    }
   //check the size of head
   cout << "Size:" << endl;
   cout << sizeof(head) …
Run Code Online (Sandbox Code Playgroud)

c++ binary alignment

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

fwrite()无法在二进制文件中写入整数

有人可以告诉我为什么这个功能不起作用?我只是无法得到它......

void writeRegister(FILE *arq, Book *L){ //writes in actual file position
  char c = '|';
  int sizeRegWrite = reglen(L); //reglen() returns the size of Book
  fwrite(&sizeRegWrite, sizeof(int), 1, arq);

  fwrite(L->TITLE, sizeof(char), strlen(L->TITLE), arq);
  fwrite(&c, sizeof(char), 1, arq); //writing delimiter

  fwrite(L->AUTHOR, sizeof(char), strlen(L->AUTHOR), arq);
  fwrite(&c, sizeof(char), 1, arq); //writing delimiter

  fwrite(L->PUBLISHER, sizeof(char), strlen(L->PUBLISHER), arq);
  fwrite(&c, sizeof(char), 1, arq); //writing delimiter

  fwrite(L->YEAR, sizeof(int), 1, arq);
  fwrite(&c, sizeof(char), 1, arq); //writing delimiter

  fwrite(L->LANGUAGE, sizeof(char), strlen(L->LANGUAGE), arq);
  fwrite(&c, sizeof(char), 1, arq); //writing delimiter

  fwrite(L->PAGES, …
Run Code Online (Sandbox Code Playgroud)

c binary file fwrite

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

在Java中移动二进制位

我在Java中转换字符串时遇到了一些麻烦.基本上我有我的名为finalBinary的Stringbuilder,它包含二进制位字符串"00110101",我试图将它向左移5次,就像这样;

输入:00110101

产量:10100110

我一直在关于Oracle网站上的bitInversion以及这里的一些论坛,但我没有运气:(我非常感谢帮助,谢谢你们这么多人!:)

java binary

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

这个While循环如何退出?(Java)的

我试图弄清楚这个程序是如何工作的,我陷入了While循环,我不明白第二个循环如何退出,因为它v永远不会等于0或负数.既然这是唯一可以退出该循环的条件,还是我错过了更深层次的东西?代码将整数(> 0)转换为二进制.

public class Binary { 
public static void main(String[] args) { 

    // read in the command-line argument
    int n = Integer.parseInt(args[0]);

    // set v to the largest power of two that is <= n
    int v = 1;
    while (v <= n/2) {
        v = v * 2;
    }

    // check for presence of powers of 2 in n, from largest to smallest
    while (v > 0) {

        // v is not present in n 
        if (n …
Run Code Online (Sandbox Code Playgroud)

java binary while-loop

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

我在这个用于CLRS练习2.1-4的python代码中出错了

所以问题是:"考虑添加两个n位二进制整数的问题,存储在两个n元素数组A和B中.两个整数之和应该以二进制形式存储在(n + 1)元素中数组C.正​​式陈述问题并写入伪代码以添加两个整数."

我的这个问题的python代码是:

A = [1,0,1,1,0,1,0]
B = [1,1,1,0,1,0,0]
n = len(A)
C = [0,0,0,0,0,0,0,0]

for i in range(0, n):
    C[i] = A[i] + B[i] + C[i]
    if C[i] == 2:
        C[i] = 0
        C[i+1] == 1
    elif C[i] == 3:
        C[i] = 1
        C[i+1] = 1


print C
Run Code Online (Sandbox Code Playgroud)

此外,我在左侧取得了最低位数,在完成计算后我可以反转.

我无法弄清楚错误是什么,请帮忙!

python binary addition clrs

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

如何在不到1秒的时间内运行此代码?

如何在不超出时间限制的情况下解决此问题

http://codeforces.com/problemset/problem/474/B

我尝试将所有范围放在2D矢量中,然后使用二分搜索查找所需的索引,但似乎fn中的循环BS()需要花费很多时间才能执行,因为矢量的大小可以是10 ^ 6.

这是我的代码:

#include <iostream>
#include <vector>
using namespace std;

int Search(vector <vector<int> > a,int key){
    int start = 0;
    int end = a.size() - 1;
    while (start <= end){
        int mid = start + (end - start) / 2;
        if (a[mid][0] > key && a[mid][1] > key){
            end = mid - 1;
        }
        else if (a[mid][0] < key && a[mid][1] < key){
            start = mid + 1;
        }
        else {
            return mid;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c++ binary search

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

Protobuf Java到C++序列化[二进制]

我有一个程序,用Java中的Protobuf序列化数据,在byte [] Array中写入二进制数据,然后将其保存在".txt"文件中.我在字符串流中接收C++端的数据.现在我想用C++解析那个二进制数据,但是Protobuf-Parsing-Method"parseFromString()"不起作用!我的测试消息中的字段未设置.我为此写了一个小测试,我可以给你看一些代码:

Java序列化

  byte[] s = test.build().toByteArray(); //This is serialized to "C:\test.txt" as binary
Run Code Online (Sandbox Code Playgroud)

C++解析:

Test t1; // My Protobuf Message
std::ifstream myFile("C:\\test.txt");
std::string s;
myFile >> s;

t1.ParseFromString(s);
std::cout << "Decoded: " << t2.s() << std::endl; // Check if parsing was correct
Run Code Online (Sandbox Code Playgroud)

但它只是返回:"解码:",好像t2是空的,但它不应该!如何用C++解析二进制数据?

java binary parsing protocol-buffers

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

在这个条件下我该问什么?

我得到以下代码:

if (a & 1){
...
}
Run Code Online (Sandbox Code Playgroud)

但是我什么时候进入if条件?没有==!=.我很困惑......我什么时候进入if状态呢?

c binary bit-manipulation

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

二进制到十进制转换器功能给出了错误的解

就像标题所说,我做了一个小函数,从用户字符串1和0取出,输出应该是它的十进制数,但由于某种原因我得到了错误的答案,希望你能帮我找到问题.

public class ToDecimal{
public static void main(String[] args){

    String string = args[0];

    int length = string.length();
    int power = length - 1;
    int decimal = 0;

    while(length > 0){

        if (string.charAt(length - 1) == '1'){
            decimal = decimal + (int)(Math.pow(2, length - 1));
        } else if (string.charAt(length - 1) == '0'){

        } else {
            System.out.println("Wrong string spelling...");
        }

        length--;
    }

    System.out.println(decimal);

}
Run Code Online (Sandbox Code Playgroud)

}

java binary

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

使用PHP将二进制转换为十六进制

如何使用PHP 将二进制数(即1111111)转换为十六进制(即7f)?我知道我能做到dechex(bindec('1111111'));,但是,我确信这不是正确的方法.

我试过bin2hex('1111111')但结果是31313131313131.

php binary hex

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