标签: binary-data

为什么二进制文件在压缩时会损坏?

我有一项通过网络提供压缩文件的服务。该 zip 包含 Windows 平台的可执行文件。

我正在使用 RubyZip 库来压缩文件,但该过程会损坏二进制文件。在我的本地服务器上,我们通过系统调用使用 zip 命令,它工作正常。

zip 命令在 Heroku 上不可用,我根本没有选择。

我正在使用这个类:

require 'zip/zip'

# This is a simple example which uses rubyzip to
# recursively generate a zip file from the contents of
# a specified directory. The directory itself is not
# included in the archive, rather just its contents.
#
# Usage:
#   directoryToZip = "/tmp/input"
#   outputFile = "/tmp/out.zip"   
#   zf = ZipFileGenerator.new(directoryToZip, outputFile)
#   zf.write()
class ZipFileGenerator

  # Initialize with the directory …
Run Code Online (Sandbox Code Playgroud)

ruby windows zip heroku binary-data

4
推荐指数
1
解决办法
3121
查看次数

C 中字节到有符号 int

我有一个二进制值存储在 C 中的 char 中,我想将这个字节转换为 C 中的有符号 int 。目前我有这样的东西:

char a = 0xff;
int b = a; 
printf("value of b: %d\n", b);
Run Code Online (Sandbox Code Playgroud)

标准输出的结果将为“255”,所需的输出为“-1”。

c casting binary-data

4
推荐指数
1
解决办法
7861
查看次数

我需要通过检查原始内容来识别二进制文件

我遇到过这个文件 - 并且非常了解它的结构......

\n\n

512 字节标头(其中包含字段定义记录的“计数器”。)

\n\n

768 字节字段定义记录 - 多个实例。显然后续数据记录中的每个字段都有一个。

\n\n

数据 - 在固定长度记录中(数据记录长度也在标头中。)

\n\n

我检查了来自同一来源的几个文件 - 每个文件的前几个字节都不同 - 彼此不同。

\n\n

有一个十六进制字符的字符串与我的示例中相同 - 但这些十六进制字符不代表可读字符串: \xc5\xa0\xc2\xbe\xc5\xbdY#d\xc3\x8b@=q\ xc3\x92\xc3\xa3\xc2\xbcd\xc3\x90

\n\n

标头中没有人类可读的字符串。

\n\n

有人知道我这里有什么样的文件吗?

\n\n

编辑\n昨晚,我能够到达源计算机 - 并注意到 - 对于这个文件,至少还有其他三个具有相同基本名称的文件 - 扩展名:.blb、.blk 和 .idx。

\n\n

我还没有这些附加文件的副本......

\n\n

这有帮助吗?有人知道这会进入什么样的“数据库”吗?

\n

file-type reverse-engineering binary-data

4
推荐指数
1
解决办法
6163
查看次数

将 python 浮点数转换为字节

我想将 Python 浮点数转换为字节数组,将其编码为 32 位小端 IEEE 浮点数,以便将其写入二进制文件。

在 Python 3 中执行此操作的现代 Pythonic 方法是什么?对于整数我可以这样做,但是对于浮点数my_int.to_bytes(4,'little')没有方法。to_bytes

如果我可以一次性为 numpy 数组中的每个浮点执行此操作(使用 dtype numpy.float32),那就更好了。但请注意,我需要将其作为字节数组获取,而不仅仅是立即将数组写入文件。

有一些听起来类似的问题,但它们似乎主要是关于获取十六进制数字,而不是写入二进制文件。

python numpy binary-data

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

使用 JS/TS 从二进制字符串创建并下载 PDF 文件

对服务器的 Axios 请求以二进制字符串形式响应 PDF 的内容。

\n\n
export const fetchPDFfile = async (id: string): Promise<string> => {\n  const { data } = await http.get<string>(`${baseUrl}/${id}.pdf`);\n  return data;\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

Chrome 开发工具和控制台记录数据的响应如下:

\n\n
%PDF-1.4\n%\xc3\xa2\xc3\xa3\xc3\x8f\xc3\x93\n2 0 obj <</ColorSpa ......\n..........\nstartxref\n10991\n%%EOF\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 定义string为 Axios 响应体的预期类型,对吗?或者它应该(投射到)Blob?
  • \n
\n\n

现在我想在客户端下载这个 PDF 文件。关于此有很多问题,但没有一个对我有用,也没有一个有明确的答案。

\n\n

所以到目前为止我所做的是(在 React 组件中):

\n\n
    const data = await fetchPDFfile(props.id);\n    const blob = new Blob([data], { type: \'application/pdf\' });\n    const href = window.URL.createObjectURL(blob);\n    const theLink = document.createElement(\'a\');\n    theLink.href = href;\n    theLink.download = props.id + …
Run Code Online (Sandbox Code Playgroud)

javascript cross-browser binary-data typescript axios

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

在QR码中存储二进制数据(ZXING Java库)

我的 Java 程序需要通过 QR 码发送二进制有效负载,但我无法让它工作。我尝试了几个QR码库和许多方法,但似乎都有这个问题。我当前的实现使用ZXING。

问题是我尝试过的所有 Java 库似乎都专注于 String 有效负载,并且不提供对二进制数据的支持。通常建议的解决方案是将二进制数据编码为 Base64。然而,我的数据已经接近二维码的大小限制。由于Base64编码导致33%的通货膨胀,我的数据太大了。我已经付出了巨大的努力来减少有效负载的大小,它目前由 4 个字符散列组成,并由新行分隔;所有这些都在 Java Deflator 类的最大级别压缩中。我无法让它变得更小。

我需要一种以最小的数据膨胀开销将二进制数据存储在二维码中的方法。

java qr-code binary-data zxing

4
推荐指数
1
解决办法
2348
查看次数

在Matlab中提取嵌入32位二进制数中的多个数字的最快方法是什么

我有一个 32 位数字 (uint32),其中包含四个数字,如下所示:

  • Var1 位于位 32:31 中
  • Var2 位于位 30:22 中
  • Var3 位于位 21:13 中
  • Var4 位于位 12:1 中

以下代码有效,但我想让它更快

Var1=bitshift(fourbytes,-30);
Var2_temp=bitshift(fourbytes,-21);
Var2=bitand(Var2_temp,511);
Var3_temp=bitshift(fourbytes,-12);
Var3=bitand(Var2_temp,511);
Var4=bitand(fourbytes,2^12-1));
Run Code Online (Sandbox Code Playgroud)

例子:

fourbytes = 2149007896;
Run Code Online (Sandbox Code Playgroud)

结果是

Var1=2;
Var2=0;
Var3=372
Var4=536
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西

Var1=bin2dec(num2str(bitget(fourbytes,32:-1:31)));
Run Code Online (Sandbox Code Playgroud)

但这和 bi2de 一样慢得令人难以置信

bi2de(bitget(onebyte(1),32:-1:31),'left-msb');
Run Code Online (Sandbox Code Playgroud)

是我用 C 编写这部分的唯一选择,还是我缺少更好的方法?

matlab binary-data

4
推荐指数
1
解决办法
118
查看次数

用于编译/反编译二进制数据文件的通用实用程序或库?

我有各种二进制文件格式,我需要转储到某种文本格式,编辑然后重新编译(可能是二进制格式略有不同的版本).当然,我可以在C/C++中编写一堆实用程序代码来执行此类操作,并且可能利用库来处理文本方面(XML或JSON或其他),但这是一个不断出现的任务模式在我的工作中,在我看来,可能应该已经存在某种用于此类工作的通用工具.

显然需要某种方式来描述二进制文件格式 - 模式或类似 - 这需要支持所有明显的数据类型(字符串,各种大小的整数,bool等,浮点数也会很好),以及计数字段,长度字段,填充/对齐等等,以处理您在数据文件中找到的所有典型内容.拥有字节序支持也很有用,因为二进制文件可能具有与我们运行的平台不同的字节序.

如果这样的事情不存在我会感到非常惊讶,但到目前为止我还没有通过谷歌运气(你怎么甚至简洁地描述这样的实用工具或图书馆?).我记得最接近的是Apple的资源编译器/反编译器实用程序在"经典"Mac OS时代.这些使用了类C语法,头文件中的资源模板定义用于描述各种二进制资源的格式,您可以在这种类似C的源语法和二进制资源之间进行编译/反编译.

compiler-construction binaryfiles utility binary-data decompiler

3
推荐指数
1
解决办法
1288
查看次数

是否有localStorage中不允许的任何字符?

我一直在使用localStorage以字符串格式存储一些二进制数据,虽然这个值是明确设置的(alert设置后立即设置,或者甚至设置后的一段时间,显示正确的值),但是当页面下次加载时它会丢失.

起初我认为这可能是因为数据包含空字节,所以我重新设计了压缩器,以便它永远不会输出它们.然而,这没有任何区别,因为价值仍然丢失.

localStorage.testing = 1在设置二进制数据后立即添加.即使另一个丢失,也会保留此值.

我绝对肯定没有代码delete localStorage.myitem.

可能导致此问题的原因是什么?

如果它有帮助,这里是我试图存储的数据,以十六进制表示:

0x1103c0a0   0xd6cf0305   0xc0a0d6cf   0x0307c0a0   0xd6cf0309   0xc0a0d6cf
0x030bc0a0   0xd6cf030d   0xc0a0d6cf   0x0311c0a0   0xd6cf0313   0xc0a0d6cf   0x0301
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚测试过localStorage.testvalue = realvalue.replace(/[\x00-\x1f]/g,'');并成功保存了它.所以,我想知道规范在哪里说控制字符可能不会用在字符串中.

html5 binary-data local-storage

3
推荐指数
1
解决办法
2350
查看次数

从二进制数据中识别没有扩展名的文件类型

我有一些没有扩展名的文件.我想将扩展名与他们联系起来.为此,我编写了一个python程序来读取文件中的数据.我怀疑的是,如果不使用第三方工具,如何在没有扩展名的情况下识别其类型.

我只需要识别pdf,doc和文本文件.其他类型的文件是不可能的.

我的服务器是中心

python binaryfiles file binary-data

3
推荐指数
2
解决办法
5026
查看次数