我正在阅读一个二进制文件,我知道它的结构,我试图放入一个结构但是当我来读取二进制文件时,我发现当它单独打印出结构时,它似乎正确但是然后在第四次阅读时,它似乎将它添加到上次读取的最后一个成员.
这里的代码可能比我解释它更有意义:
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) 有人可以告诉我为什么这个功能不起作用?我只是无法得到它......
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) 我在Java中转换字符串时遇到了一些麻烦.基本上我有我的名为finalBinary的Stringbuilder,它包含二进制位字符串"00110101",我试图将它向左移5次,就像这样;
输入:00110101
产量:10100110
我一直在关于Oracle网站上的bitInversion以及这里的一些论坛,但我没有运气:(我非常感谢帮助,谢谢你们这么多人!:)
我试图弄清楚这个程序是如何工作的,我陷入了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) 所以问题是:"考虑添加两个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)
此外,我在左侧取得了最低位数,在完成计算后我可以反转.
我无法弄清楚错误是什么,请帮忙!
如何在不超出时间限制的情况下解决此问题
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) 我有一个程序,用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++解析二进制数据?
我得到以下代码:
if (a & 1){
...
}
Run Code Online (Sandbox Code Playgroud)
但是我什么时候进入if条件?没有==或!=.我很困惑......我什么时候进入if状态呢?
就像标题所说,我做了一个小函数,从用户字符串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)
}
如何使用PHP 将二进制数(即1111111)转换为十六进制(即7f)?我知道我能做到dechex(bindec('1111111'));,但是,我确信这不是正确的方法.
我试过bin2hex('1111111')但结果是31313131313131.