我有一个C++代码.我编译它,我现在有二进制xyz.现在,每次我需要执行二进制文件时,我都必须切换到相应的目录来使用./xyz执行它.但是如何使用命令xyz从任何地方运行二进制文件.如何将此二进制文件链接到ubuntu中的命令.我目前使用的是Ubuntu 10.10
我有一个以下格式的二进制文件:
[N bytes identifier & record length] [n1 bytes data]
[N bytes identifier & record length] [n2 bytes data]
[N bytes identifier & record length] [n3 bytes data]
Run Code Online (Sandbox Code Playgroud)
如你所见,我有不同长度的记录.在每个记录中,我有N个字节固定,其中包含和id以及记录中的数据长度.
这个文件很大,可以包含3百万条记录.
我想通过应用程序打开此文件,让用户浏览和编辑记录.(插入/更新/删除记录)
我的初步计划是从原始文件创建和索引文件,并为每条记录保留下一个和上一个记录地址,以便轻松地前后导航.(某种链表,但文件不在内存中)
是否有库(java库)来帮助我实现这个要求?
您认为有用的任何推荐或经验?
-----------------编辑-------------------------------- --------------
感谢您的指导和建议,
更多信息:
原始文件及其格式不受我的控制(它是第三方文件),我无法更改文件格式.但我必须阅读它,让用户浏览记录并编辑其中一些(插入新记录/更新现有记录/删除记录),最后将其保存回原始文件格式.
你还推荐使用DataBase而不是普通的索引文件吗?
-----------------第二次编辑------------------------------- ---------------
更新模式下的记录大小是固定的.它表示更新(编辑)的记录与原始记录的长度相同,除非用户删除记录并创建不同格式的另一条记录.
非常感谢
今天的问题是我需要在起始位置的二进制文件中编写一个数字数组.我有它应该开始的位置,我不想在此之后覆盖值,只是想将数组插入文件的起始位置.例如:
12345
Run Code Online (Sandbox Code Playgroud)
让我们在第2位推456:
12456345
Run Code Online (Sandbox Code Playgroud)
我知道可能我必须自己实现它,但我想知道你对如何尽可能有效地实现它有什么看法.
比如,如果我想使用MongoDB的GridFS存储PDF或ePub文件,是否可以对数据文件执行全文搜索?
我将尝试以更舒适且不依赖于用户的方式编辑Windows 8.1 StartScreen .
我知道这不是Microsoft使用其操作系统的方式,但在企业环境中必须有一种方法来自定义StartScreen.如果我部署一个新的软件包,那么StartScreen上应该有一个图标(在右侧组中,在预定义的位置).
于是,我找到的文件appsFolder.itemdata-ms和appsFolder.itemdata-ms.bak两个都是二进制编码.如果我在十六进制编辑器中打开它们,有几个组名和链接可见但不是转储格式.也无法按照需要的方式在hexeditor中编辑此切片.
appsFolder.itemdata-ms的一部分
?%??????? ? ? S t o r e Y+????BGJ F 1SPS?w?
Run Code Online (Sandbox Code Playgroud)
我试着写一个解码器(使用C#),没有成功,一切都可以查看,但只是像在十六进制编辑器中一样.
尝试使用PowerShell命令,Export-StartLayout -as xml所有内容都以正确的方式导出,组,磁贴,位置为:
export.xml
<launcher version="2">
<view name="Start">
<group name="Desktop">
<tile FencePost="0" size="wide310x150" AppID="Microsoft.Windows.Desktop"/>
<tile FencePost="0" size="square150x150" AppID="Microsoft.InternetExplorer.Default"/>
<tile FencePost="0" size="square150x150" AppID="Chrome"/>
</group>
<group name="Entwicklung">
<tile FencePost="0" size="square150x150" AppID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Fiddler2\Fiddler.exe"/>
<tile FencePost="0" size="square150x150" AppID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Notepad++\notepad++.exe"/>
</group>
</view>
</launcher>
Run Code Online (Sandbox Code Playgroud)
但是Import-StartLayout没有按预期工作,使用此命令,先前导出的布局无法应用于当前用户(仅使用gpo,但随后启动屏幕被锁定).
我还使用了ILSpy来检查PowerShell Cmt-Lets,但最终却是非托管代码部分.
简而言之,有没有办法解码二进制文件来编辑它们(可能是第三方工具?)并将它们写回以将更改应用于当前用户?
我有一个很大的数组,我想写一个文件.
但如果我这样做:
local out = io.open("file.bin", "wb")
local i = 4324234
out:write(i)
Run Code Online (Sandbox Code Playgroud)
我只是将数字作为字符串写入文件.如何为要归档的数字写入正确的字节.我怎么能在以后阅读它.
我已经在 StackOverFlow 网站和互联网上搜索了这个问题及其相关问题,但我仍然没有得到明确的答案。我想知道我可以使用什么软件将任何文件(关于大小)转换为包含此特定文件的零和一(仅)的文本文件,然后将此包含这些零和一的文本文件转换回原始文件. 如果包含零和一个的文件不被称为“二进制文件”,请执行我的无知,我在互联网上搜索并在维基百科中阅读了名为 [hex dump] 的软件,我不需要那些,我需要我上面提到的,谢谢你们。
我有一个库,它由 3 个文件组成,这些文件打算放在站点 python 目录中。
FbxCommon.py
fbxsip.so
fbx.so
Run Code Online (Sandbox Code Playgroud)
一旦这些文件就位,Python 就可以看到fbxpackage.json。这个系统如何运作?SO里面的文件是什么?
如果它是一个 DLL,它怎么可能与 python 版本相关(它适用于 python 3.3,但不适用于 python 3.5)
更新
区分代码如下
from fbx import *
lSdkManager = FbxManager.Create()
Run Code Online (Sandbox Code Playgroud)
在 Python 3.3 上它什么也不做,而在 Python 3.5 上它会抛出此错误:
Traceback (most recent call last):
File "/opt/pycharm-2017.2.2/helpers/pydev/pydevd.py", line 1599, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
File "/opt/pycharm-2017.2.2/helpers/pydev/pydevd.py", line 1026, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/opt/pycharm-2017.2.2/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, …Run Code Online (Sandbox Code Playgroud) 这是 2 个独立的应用程序。
emp.bin.我尝试分别打印每个字符,结果发现名称中的每个字母后面都有 3 个空字符 '\n',这就是它不在第一个字符后面打印的原因。
“编写”应用程序代码:
//Receives records from keyboard and writes them to a file in binary mode
#include <stdio.h>
int main()
{
FILE *fp;
char another = 'Y';
struct emp
{
char name[40];
int age;
float bs;
};
struct emp e;
fp = fopen("emp.bin", "wb");
if (fp == NULL)
{
puts("Cannot open the file.");
return 1;
}
while(another == 'Y')
{
printf("Enter the employee name, age and salary: ");
scanf("%S %d %f", …Run Code Online (Sandbox Code Playgroud) 我想将我的 API 配置文件 ( binary.file) 之一添加到 Github 机密 (MY_BINARY_SECRET)。binary.file然后它将在工作流程中再次读取和写入:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install System
run: |
sudo apt-get update
sudo apt-get install -y pip python3.8-venv libcurl4-openssl-dev
- name: Set up configurations
shell: bash
run: |
echo "${{ secrets.MY_BINARY_SECRET }}" > binary.file
python3 .... # the python script will need binary.file to complete authentication
Run Code Online (Sandbox Code Playgroud)
然而,我尝试了很多个小时,用不同的方法将二进制内容复制到 Github Secret,但都失败了。我试过pbcopy,less,cat。有谁知道如何在 github actions 中通过 Github Secret 编写二进制文件?或者更好的解决方案?
谢谢你!
binaryfiles ×10
binary ×2
c ×2
file-io ×2
linux ×2
binary-data ×1
c# ×1
file ×1
file-pointer ×1
github ×1
io ×1
java ×1
lua ×1
mongodb ×1
nosql ×1
pointers ×1
powershell ×1
python-3.x ×1
scanf ×1
ubuntu ×1
windows ×1
windows-8.1 ×1