标签: binaryfiles

读/写二进制文件

我只是想从二进制文件中读/写.我一直在关注这个教程,它的工作原理......除了它似乎是在写一个txt文件.我在测试时命名文件test.bin,但记事本可以打开并正确显示它,所以我认为它实际上不是二进制文件.我已经说过它是一个带有"wb"和"rb"的二进制文件吗?

if arg[1] == "write" then
    local output = assert(io.open(arg[2], "wb"))

    output:write(arg[3]) --3rd argument is written to the file.

    assert(output:close())
elseif arg[1] == "read" then
    local input = assert(io.open(arg[2], "rb"))

    print(input:read(1)) --Should read one byte, not one char/int. Right?
end
Run Code Online (Sandbox Code Playgroud)

lua binaryfiles

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

将二进制数据插入到 pymongo 的 Mongo 字段中

我正在尝试做一些我觉得微不足道的事情,所以如果其他地方有一些简单的解决方案,请原谅我。

我正在为一些内容索引编写测试,为此我试图将一些二进制数据(pdf)插入到我拥有的 mongo 集合中。但是,我在这方面遇到了很多麻烦。这是我相关代码的当前状态

pseudo_file = StringIO()
pdf = pisa.CreatePDF("This is a test", pseudo_file)
test = {"data": pseudo_file}
test.update({"files_id": {"name": "random_asset_name"}, "category": "asset"})
self.chunk_collection.insert(json.dumps(test))
Run Code Online (Sandbox Code Playgroud)

我设法在 Pymongo google group 上找到了一个解决这个问题的旧线程(https://groups.google.com/forum/#!topic/mongodb-user/uBAbY1wdQbs),但我似乎找不到Binary对象用于解决该问题,它似乎没有包含在 Python 中(我使用的是 2.7)

现在我遇到的问题是该StringIO对象不是 JSON 可序列化的,这是明智的,但 pymongo 需要一个有效的 utf8 对象传递给它。我尝试使用 base64 编码StringIO.getvalue(),并直接序列化相同的值。

当然,pdf 不是 utf8 值,所以我想知道是否有另一种方法让 pymongo 识别出我正在向它发送原始二进制文件。任何帮助表示赞赏。

python encoding binaryfiles mongodb pymongo

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

由于二进制文件,无法推送到 Git

因此,由于某些二进制视频文件,我一直在将问题推送到我一直在工作的主分支。当我第一次尝试推送它们时,这些文件太大了。所以我将它们从我正在处理的项目目录中删除。但是现在,当我从第一次初始推送开始尝试推送时,它会返回此错误消息。

Compressing objects: 100% (38/38), done.
Writing objects: 100% (39/39), 326.34 MiB | 639.00 KiB/s, done.
Total 39 (delta 16), reused 0 (delta 0)
remote: error: GH001: Large files detected.
remote: error: Trace: b7371dc6457272213ca1f568d9484c49
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File themes/SomeFile/uploads/me_582610_mountain-river.mov is 315.08 MB; this exceeds GitHub's file size limit of 100 MB
To git@github.com:UserName/Project.git
Run Code Online (Sandbox Code Playgroud)

它说的文件太大,似乎仍然存在于我的目录中,甚至在我的计算机上实际上根本不存在。我把它彻底删除了。这里有什么问题?这是我第一次遇到这个问题。我去了引用的 Git 站点寻求支持,https://help.github.com/articles/working-with-large-files/,然后运行它git rm --cached me_582610_mountain-river.mov并返回消息fatal: pathspec 'me_582610_mountain-river.mov' did not match any files

请任何帮助将不胜感激!

git binaryfiles github command-line-interface

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

有目的地禁用 Git 中特定文件的历史记录,同时保留最新版本

我正在使用专有的数据库语言来开发我的程序。源代码存储在大型二进制文件中,在提交到 git 存储库之前,我使用代码导出实用程序以纯文本形式保存源代码。由于我的活动源代码文件是一个大型二进制文件,我想更新存储库中的该文件,但我不关心保留它的历史记录。我使用的 IDE 总是让它​​看起来好像二进制文件已更改,即使我只对外部组件文件(例如 xml、操纵的测试数据等)进行了更改。我的问题是这样的:

如何让 git 只保留这个特定二进制文件的最新版本,以节省我的中央存储库服务器的空间?本质上,我不想跟踪这个特定文件的历史记录,但我仍然想在我的存储库中保留最新的副本。

我在 Google 和 Stack Exchange 中搜索了答案,发现了类似的问题,但没有找到 Git 的答案。

git binary binaryfiles revision-history

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

c ++从/到二进制文件读/写类

我需要将一个类写入一个二进制文件,然后我需要读取它。

我有TriangleBinaryFile班级,还有一些其他班级。我不确定我是写错了还是读错了。读取时出现错误。调试后,我认为它为我的私有变量获取了不适当的数据。如果有人能给我一些有关如何使其正常工作的建议,我将非常高兴。

我不确定是否应该粘贴整个代码,所以我会给你一小段代码。以防万一,这里是我的源代码的下载链接:

https://my.pcloud.com/publink/show?code=XZJ7CYZbsLWLglqV5p83csijcEUTFqqpM3k

我是编程新手,我的英语不太好,所以我提前为我的错误道歉。

class Point
{
private:
    int x;
    int y;
};

class Figure
{
private:
    string name;
    string type;
};

class Triangle: public Figure
{
private:
    Point p1, p2, p3;
};

class BinaryFile
{
private:
    string FileName;
    fstream File;
public:
    //...
    void AddNewFigure(istream& stream)
    {       
        File.open(this->FileName, ios::binary | ios::app);
        if(!this->File)
        {
            cerr<<"File error <"<<this->FileName<<">\n";
            exit(1);
        }
        Triangle fig;
        fig.MakeNewFigure(stream);
        File.write((char*)&fig, sizeof(Triangle));
        File.close();
    }

    Triangle GetTriangle()
    {
        Triangle trig;
        Point p;
        string str(""); int …
Run Code Online (Sandbox Code Playgroud)

c++ serialization binaryfiles

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

字面意思是将二进制数据写入文件

我有一个整数数组

Array
(
    [0] => Array
        (
            [0] => 1531412763
            [1] => 1439959339
            [2] => 76
            [3] => 122
            [4] => 200
            [5] => 4550
            [6] => 444
        )
...
Run Code Online (Sandbox Code Playgroud)

依此类推,我想如果我把它看作是一个数据库 - 最外层数组的元素是行,内部数组的元素是列.

我想将该信息保存到文件中,以便稍后我可以检索它,但我想将其保存为二进制数据以节省空间.基本上,如果我将示例中的第一个整数写入1531412763文件,它将占用10个字节,但如果我可以将其保存为有符号整数,则需要占用4个字节.

我已经看了一些其他的答案,这些答案都建议使用fwrite哪些我无法理解如何以这种方式使用?

php filesystems binaryfiles binary-data

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

有没有一种好方法可以跟踪 GIT 存储库中 Excel 工作表的更改?

我已经尝试过如何对 Excel 文件和 SQL 架构文件执行更好的文档版本控制中提供的解决方案,但我无法找到一个好的解决方案来解压缩文件以查看 Git 可以跟踪的更改。我使用 Git 一段时间了,想知道是否有一种很好且相当简单的方法来跟踪所做的更改。Excel是在JAVA框架中使用的。

git excel vba binaryfiles

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

如何使用 Ansible 模块将 Base64 var 解码为二进制文件

我正在hashi_vault模块的帮助下从 HashiCorp 的保险库中读取 base64 文件。代码示例:

- name: Vault get b64.pfx file
  set_fact:
      b64_pfx: "{{ lookup('hashi_vault',
                    'secret={{ path_pfx }} token={{ token }} url={{ url }} cacert={{ role_path}}/files/CA.pem')}}"
Run Code Online (Sandbox Code Playgroud)

然后作为下一步,我需要将此 base64 var 解码为二进制格式并将其存储在文件中。我目前正在使用shell模块来完成这项工作。代码示例:

- name: Decode Base64 file to binary
  shell: "echo {{ b64_pfx }} | base64 --decode > {{ pfxFile }}"
  delegate_to: localhost
Run Code Online (Sandbox Code Playgroud)

我在网上寻找可能的解决方案,例如( 带有 base64 编码二进制文件的复制模块添加了额外的字符以及如何使用 ansible Vault 上传加密文件?)。

但是我能找到的唯一可行的解​​决方案是使用 shell 模块。由于这是一个老问题,是否有任何解决方法?

更新:

不要使用Python 2.7,因为b64decode过滤器上似乎存在错误(示例如下):

<localhost> ESTABLISH LOCAL CONNECTION FOR …
Run Code Online (Sandbox Code Playgroud)

base64 binaryfiles ansible

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

Powershell 二进制 grep

有没有办法在powershell中判断指定文件是否包含指定的字节数组(在任意位置)?

\n\n

就像是:

\n\n
fgrep --binary-files=binary "$data" "$filepath"\n
Run Code Online (Sandbox Code Playgroud)\n\n

当然,我可以写一个简单的实现:

\n\n
function posOfArrayWithinArray {\n    param ([byte[]] $arrayA, [byte[]]$arrayB)\n    if ($arrayB.Length -ge $arrayA.Length) {\n        foreach ($pos in 0..($arrayB.Length - $arrayA.Length)) {\n            if ([System.Linq.Enumerable]::SequenceEqual(\n                $arrayA,\n                [System.Linq.Enumerable]::Skip($arrayB, $pos).Take($arrayA.Length)\n            )) {return $pos}\n        }\n    }\n    -1\n}\n\nfunction posOfArrayWithinFile {\n    param ([byte[]] $array, [string]$filepath)\n    posOfArrayWithinArray $array (Get-Content $filepath -Raw -AsByteStream)\n}\n\n// They return position or -1, but simple $false/$true are also enough for me.\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x94 但速度非常慢。

\n

powershell grep binaryfiles string-matching powershell-core

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

在 GitHub 上显示二进制文件的文本差异

我正在尝试使用 Git 和 GitHub 来同步一些应用程序配置文件。这些是以二进制格式存储的 XML 或 plist 文件。例如,键盘大师.kmsync文件.

我可以通过文本编辑器打开这些文件以查看 XML 格式。

但是当我在 GitHub 拉取请求、提交视图等中查看这些文件差异时。我看到一个无用的二进制差异,没有可见的变化:

显示 0 添加和 0 删除。
BIN +17 字节 (100%)
未显示二进制文件。

我可以通过 git 通过.gitattributes文件获取基于文本的差异以在本地显示。但是,GitHub 似乎不尊重这些修改:

GitHub 不使用 .gitattributes 文件来选择要在差异中显示的文件,因此不可能以这种方式解决这个问题。[来源]

当我在 GitHub 上的提交和拉取请求中查看这些文件时,我想查看基于文本的更改和行差异。

例如,这里的 GitHub PR。随意分叉和实验:https :
//github.com/pkamb/so/pull/1

如何说服GitHub 存储库的 Web 视图对某些“二进制”文件使用基于文本的差异?


我找不到针对我的特定问题的现有问题(在 GitHub上显示非二进制差异)。

以下问题与此相同行为有关,但适用于本地git(不是 GitHub)。

我的问题这个问题相反,它试图在 GitHub 上将文本文件显示为二进制文件:

diff file-type binaryfiles github

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