我有一个binary名为“ input.bin”的文件。我正在练习如何使用此类文件(读取它们,更改内容并写入新的二进制文件)。输入文件的内容:
03 fa 55 12 20 66 67 50 e8 ab
Run Code Online (Sandbox Code Playgroud)
这是用hexadecimal符号表示的。
我想制作一个输出文件,它只是输入文件,每个字节的值递增一。
这是预期的输出:
04 fb 56 13 21 67 68 51 e9 ac
Run Code Online (Sandbox Code Playgroud)
这也将以hexadecimal符号表示。我正在尝试使用以下命令在 python3 中执行此操作:
with open("input.bin", "rb") as binary_file:
data = binary_file.read()
for item in data:
item2 = item+1
with open("output.bin", "wb") as binary_file2:
binary_file2.write(item2)
Run Code Online (Sandbox Code Playgroud)
但它没有返回我想要的。你知道如何修复它吗?
我正在尝试将 4 个unsigned short int以十六进制表示的数字写入二进制文件。
除了我正在写的数字之外,我还不断收到很多垃圾,我不知道为什么。我假设在从unsigned short int二进制文件的转换过程中,有垃圾被写入我的文件中。
我写入二进制文件的函数是:
int write_file (char* name, unsigned short int array[x] ){
FILE *fptr;
fptr = fopen(name, "wb");
if(fptr==NULL)
{
fclose(fptr);
return (0);
}
unsigned short int code = 0xABCD;
const void *ptr = &code;
fwrite(ptr, sizeof(ptr), 1, fptr);
unsigned short int code2 = 0x0000;
const void *ptr2 = &code2;
fwrite(ptr2, sizeof(ptr2), 1, fptr);
unsigned short int code3 = 0x0001;
const void *ptr3 = &code3;
fwrite(ptr3, sizeof(ptr3), 1, fptr);
unsigned …Run Code Online (Sandbox Code Playgroud) 我正在使用 CX_ORACLE 编写一个 Python 脚本,该脚本将需要大约 20K 个文件并将它们上传到 BLOB 列中。
它们是 PDF、CSV、TXT 和 JPG。
我只是不明白如何将这些文本和二进制文件全部放入 BLOB 列中。
尝试学习一些基本的数据结构和算法,我尝试编写基本的二分搜索代码,但除非输入与中间相同,否则它不起作用?有人可以帮忙吗?
void Search(int input) {
int array[10] = { 0.1,2,3,4,5,6,7,8,9,10 };
int first = array[0];
int last = sizeof(array) / sizeof(array[0]);;
int middle = first + last / 2;
if (input == middle) {
cout << "search succesful";
}
else if (input > middle) {
middle + 1;
Search(input);
}
else if (input < middle) {
middle - 1;
Search(input);
}
}
int main()
{
int input;
cin >> input;
Search(input);
}
Run Code Online (Sandbox Code Playgroud) 我觉得这个问题可能有点蠢。。
由于我们存储位来指示数字,并且由于我们拥有整个 RAM,因此我们应该能够拥有一个无限大小(实际上是自定义大小)的数字,该数字可以占用整个 RAM(或其指定部分) )。
正确的?
例如,如果我们这样做:
mov ax, 0xFFFF
add ax, 1
jc custom_function ; if I remember correctly jc checks the carry flag
Run Code Online (Sandbox Code Playgroud)
custom_function 是一个标签/函数,它具有一种算法来设置下一个位以创建无限大小的数字。
问题
这可能吗?如果不是无限大小的数字,则指定自定义(比默认值更长或更短)
我怀疑,如果可能的话,它的性能会很差(即使数量更短)。你怎么认为?
你认为拥有这样的东西会很好吗?(也许在内存有限的旧系统或嵌入式系统中这会更有效?)
我有一个像“10011011001”这样的字符串,我希望将该字符串转换为十六进制字符串,最好的方法是什么。
我想创建一个程序,将所有素数写入文件中(我知道有一个流行的算法"Sieve of Eratosthenes",但我试图自己制作).我正在尝试消除仍然具有值1的字节的所有复杂性,然后将它们写入文件中.
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
void afficher_sur_un_ficher (FILE* ficher, int nb_bit);
char el_mask (int x);
int main()
{
FILE* p_fich;
char tab[4096], mask, eli_mask;
int nb_bit = 0, x, f;
for (int i = 0; i < 4096; i++)
{
tab[i] = 0xff;
}
for (int i = 0; i < 4096; i++)
{
for (mask = 0x01; mask != 0; mask <<= 1)
{
if ((tab[i] & mask) != 0)
{
x = nb_bit;
while …Run Code Online (Sandbox Code Playgroud) 我试图更多地了解比特,我遇到了这个例子.
这段代码如何计算这些位?(顺便说一句,我的C很生锈).
unsigned int v; // count the number of bits set in v
unsigned int c; // c accumulates the total bits set in v
for (c = 0; v; v >>= 1)
{
c += v & 1;
}
Run Code Online (Sandbox Code Playgroud) 说我要减去:0000 0000 - ( - 1)
那是:(两个补充)
0000 0000
- 1111 1111
---------
= ???? ????
Run Code Online (Sandbox Code Playgroud)
什么事情会发生,我的大脑现在真的和我在一起,它之前完全没问题,我认为它的溢出让我搞砸了,有人可以请一些清关吗:)?
可能重复:
>>在javascript中
这里:
var num=10;
console.log(num/2);
num=4;
console.log(num/2);
Run Code Online (Sandbox Code Playgroud)
它给了我5和2.
还有这个:
var num=10;
console.log(num>>1);
num=4;
console.log(num>>1);
Run Code Online (Sandbox Code Playgroud)
它也给了我5和2.
那x/2是一样的x>>1吗?但为什么?