我有一个通过使用requests.get()存储在字符串中获得的 torrent 文件,并像这样获得:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept-Charset': 'utf-8',
'Connection': 'keep-alive'}
request = requests.get(url, headers=headers)
data = requests.text
Run Code Online (Sandbox Code Playgroud)
我想将其写入二进制文件,以便其中的数据正确且有效:
with open(name, "wb") as f:
f.write(data)
Run Code Online (Sandbox Code Playgroud)
然而,我似乎无法将字符串写为纯二进制数据,因为 python 不断尝试将其解释为 Unicode,并且出现如下错误:"UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-9: ordinal not in range (128)。
我尝试使用 bytearray 但出现了类似的问题:TypeError: unicode argument without an encoding。
有没有办法将字符串中的字节按原样写入文件?
最近,我在读取二进制文件时使用了该>>运算符,但在某些情况下它只会跳过一个字节。查找代码中的错误位置给我带来了很多问题,但最终我设法用该get()方法修复了这个问题,但我仍然不知道为什么>>时不时地跳过字节。
目标是将文件中的第一个字节加载到m_Value,即uint8_t。
代码>>:
bool CByte :: load ( ifstream & fin)
{
if(! ( fin >> m_Value ) ) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
代码get():
bool CByte :: load ( ifstream & fin)
{
char c = 0;
if(! ( fin . get ( c ) ) ) return false;
m_Value = static_cast <uint8_t> (c);
return true;
}
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) 我有一个包含浮点数的二进制文件,因此每 4 个字节都是一个浮点数。我不确定如何以每四个字节存储为浮点数的方式读取,这样我就可以用它做任何我需要的事情。
这是我的代码:
int main()
{
float i;
std::ifstream inFile("bin_file", std::ios::binary);
while (inFile >> i)
{
std::cout << i;
}
inFile.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它甚至不会进入 while 循环,除非我将 i 定义为字符。我猜这是因为它每次读取 1 个字节并且无法将其存储为浮点数。顺便说一句,我已经检查过并且文件打开了。
谢谢!
我们通过XCOM接收二进制格式的 EBCDIC 大型机文件。目前,有一个基于 C 的遗留应用程序正在将其转换为可读的 ASCII 格式。该文件现在如下所示:
作为迁移的一部分,我们必须迁移 Java 上的遗留应用程序。您能否建议或分享一些如何将该二进制文件转换为 Java 可读格式的链接?
当用Fortran写入数据时,我理解在数据之前和之后写入4字节“记录”。通常我已经知道我在读什么,所以我就把它扔掉。然而,这些记录中是否包含任何信息呢?是否可以从4字节记录信息中获取记录后面的数据的数据类型和计数?
我想读取命令行参数中给出的文件,并在读取后删除它.这就是我正在做的事情.
char *filename = argv[1];
char *outputfile = strcat(argv[1], ".cmp");
fd = open(argv[1], O_RDONLY);
chars = read(fd, buf, BUFFERSIZE);
fd1 = creat(outputfile, 0644);
write(fd1, buf, BUFFERSIZE);
close(fd1);
close(fd);
unlink(argv[1]);
Run Code Online (Sandbox Code Playgroud)
如果我给"mytxt"在命令行中,代码应该创建"mytxt.cmp"文件并删除"mytxt",相反,它是删除"mytxt.cmp"保持"mytxt",因为它是.为什么会这样?如何删除命令行参数中给出的文件.
我读过某个地方我们应该总是在C中打开文件作为二进制文件(即使它是一个文本文件).当时(几年前)我并不太关心它,但现在我真的需要了解是否是这种情况以及如何实现.
我一直在努力寻找这方面的信息,但我找到的最多的是它们之间的开放差异 - 甚至不是它们的结构差异.
所以我想我的问题是:为什么我们总是打开文件作为二进制文件,即使我们之前猜测它是一个文本文件?第二个问题在于每个文件本身的结构,是一个像"加密"文本文件的二进制文件?
我正在用C#编写一个项目我希望在二进制文件中保存一个类,然后在C中读取该文件我想知道如何在没有序列化和反序列化的情况下执行此操作请帮助我
我想编写一个打开二进制文件并使用DES对其加密的程序。
但是如何读取二进制文件?