大多数PDF在某些ASCII之间包含许多二进制外观部分.但是我记得还看过这样的PDF文件,其中大部分的二进制文件都没有,人们可以在文本编辑器中打开它们来研究它们的结构.
是否有将二进制PDF部分转换为ASCII/ANSI的技巧,工具或命令?(最好是"像啤酒一样自由",甚至"像在自由中一样自由")
作为一个副项目,我想尝试解析二进制文件(特别是Mach-O文件).我知道已存在的工具(otool),所以请考虑这是一个学习练习.
我遇到的问题是我不明白如何将发现的二进制元素转换为python表示.例如,Mach-O文件格式以标题开头,标题由C Struct定义.第一项是uint_32'魔数'字段.当我做
magic = f.read(4)
Run Code Online (Sandbox Code Playgroud)
我明白了
b'\xcf\xfa\xed\xfe'
Run Code Online (Sandbox Code Playgroud)
这开始对我有意义.它实际上是一个4字节的字节数组.但是我想把它当作一个4字节的int来表示原始的幻数.另一个例子是numberOfSections字段.我只想要由4字节字段表示的数字,而不是文字字节数组.
也许我正在考虑这一切都错了.有没有人在做类似的事情?我是否需要编写函数来查看这些4字节字节数组并移位并组合它们的值以产生我想要的数字?恩赐会让我在这里搞砸吗?任何指针都会非常有用.
我有一个带有示例数据的文本文件,我想把它放在Git控件下(在Windows上).我如何告诉Git将此文件视为二进制文件,因此它不会转换行分隔符(例如存储库中的其他/文本文件).
我的程序依赖于libcurl.so.3,但在RHEL6中,没有像这样的软件libcurl.so.3 ? libcurl.so.4(当我创建此链接时,我的程序可以顺利运行).但是有这样一个软链接:libcurl.so ? libcurl.so.4.
我想修改SONAME的libcurl.so.3.0.0.0直接libcurl.so.3到libcurl.so.然后我可以在RHEL 6上运行我的程序,而无需自己创建软链接.
也许我的解决方案很愚蠢,但我认为学习如何直接修改二进制文件是一件有趣的事情.
$ readelf -d libcurl.so.3.0.0
偏移量0x303cc处的动态段包含25个条目:
标签类型名称/值
0x00000001(NEEDED)共享库:[libssl.so.2]
0x0000000e(SONAME)库soname:[ libcurl.so.3 ] --->我想将此更改为libcurl.so
在Nim中编写和读取二进制文件的最佳方法是什么?我想将交替的浮点数和整数写入二进制文件,然后能够读取该文件.要用Python编写这个二进制文件,我会做类似的事情
import struct
# list of alternating floats and ints
arr = [0.5, 1, 1.5, 2, 2.5, 3]
# here 'f' is for float and 'i' is for int
binStruct = struct.Struct( 'fi' * (len(arr)/2) )
# put it into string format
packed = binStruct.pack(*tuple(arr))
# open file for writing in binary mode
with open('/path/to/my/file', 'wb') as fh:
fh.write(packed)
Run Code Online (Sandbox Code Playgroud)
要阅读我会做的事情
arr = []
with open('/path/to/my/file', 'rb') as fh:
data = fh.read()
for i in range(0, len(data), 8):
tup = binStruct.unpack('fi', …Run Code Online (Sandbox Code Playgroud) 我正试图通过AWS API Gateway将"mutlipart\form-data"发布到我的EC2实例,但我找不到办法.有一种方法可以使用"application/x-www-form-urlencoded"和Mapping Tamplate将数据转换为JSON,但仍然会发布像图像文件这样的二进制数据.有什么我想念的吗?
编辑:
我找到了另一种方式:
我将图像转换为base64字符串然后将其POST为内容类型"application/x-www-form-urlencoded".通过这种方式,我将整个图像作为字符串发送.收到消息后,我可以将其转换回PHP中的图像.只有这一点,我能找到的是当我将图像转换为base64时,它的大小会变得更大.除此之外,我找不到任何其他的缺点.如果有可能请与我分享?
我正在使用 Spring Boot 1.2.5,我想将原始二进制文件上传到控制器。文件大小可能很大,所以我不想将整个请求保存在内存中,而是流式传输文件,实际上文件是在传输开始时生成的,因此客户端甚至不知道文件的大小。我在此处看到了一个示例,说明如何使用多部分编码文件上传执行类似操作。但是,我不想要分段编码的上传,只需要原始字节流。我似乎找不到在春季处理这个用例的方法。
如何从任何文件中读取原始字节数组,并将该字节数组写回新文件?
我在C中实现了霍夫曼算法.我已经获得了基本功能,直到获得二进制代码字.所以例如,abcd将是100011000或类似的东西.现在的问题是如何在压缩文件中以二进制形式编写此代码.我的意思是如果我正常写它每1和0将是一个字符,所以没有压缩.
我需要用它们的位形式写出1和0.这是可能的C.如果是这样的话怎么样?
据我所知,C库没有帮助将数值序列化为非文本字节流.如我错了请纠正我.
最常用的标准工具是htonlPOSIX等.这些功能有缺点:
用于将任意大小序列化为char8位标准字节的接口将落在C标准之间,该标准不真正确认8位字节,并且无论标准(ITU?)将八位位组设置为基本传输单位.但旧的标准没有得到修订.
现在C11有许多可选组件,可以添加二进制序列化扩展以及线程之类的东西,而不需要对现有实现提出要求.
这样的扩展是否有用,或者担心非二进制补充机器是否毫无意义?
binaryfiles ×10
c ×2
base64 ×1
c# ×1
endianness ×1
file-upload ×1
filestream ×1
git ×1
htonl ×1
huffman-code ×1
io ×1
libcurl ×1
linker ×1
linux ×1
nim-lang ×1
pdf ×1
portability ×1
post ×1
python ×1
spring ×1
spring-boot ×1
vb.net ×1