问题标签 [bitstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jpeg - 为什么霍夫曼在(Photoshop 制作的?)JPG 文件中编码比特流中的这些模式?
出于好奇,这是一个关于我在十六进制编辑器中查看 JPG 文件时看到的一些模式的问题。我猜这是关于JPEG文件格式的问题;为什么这部分不像其他部分一样是“随机噪声”,而应该是(霍夫曼编码等)。
开始:
这种 136 位(17 字节)模式出现在一些由 Adobe Photoshop 生成的 JPG 文件中(我不知道 Photoshop 是否是唯一生成这些文件的应用程序):
它在一个文件中有几个地方,有时只是一次迭代,有时会重复 8 或 12 次,组成 1088 位或 1632 位的块。或者更准确地说,它实际上是一个 68 位的模式,重复了 2 次或更多次:
AFAIK 通过阅读有关 JPG 文件结构的一些信息,并以十六进制验证这一点,即 JPG 文件结构的开头标有 FF xx。在这些 68 位模式之前或之后都没有这样的 FF xx 结构标记。
通过使用 Breakpoint Hex Workshop,很容易在“数据可视化器”窗口中发现这些模式;虽然霍夫曼比特流的其余部分看起来像“噪音”,但突然有块显示出清晰的模式。
另外..我不确定这有多相关,但是..:
早些时候,我在 CR2 文件中也注意到了这样一种模式,即 Canon RAW 文件;不过,这里的模式是一个更简单的 40 位模式:
如果我调整空格,它会变成这样:
如您所见,这实际上是一个重复的5 位模式,它在 CR2 文件中出现的每个位置都重复了数百次。CR2 文件格式也是压缩文件,但无损。再说一遍,如果我理解正确的话,JPG 中的霍夫曼编码也是一种无损“压缩”。
我觉得很奇怪,在压缩流中,有这些(对我来说似乎是)“浪费”位的模式..
我在这里上传了一个 JPG 文件http://i.imgur.com/t0mi7vo.jpg - 这只是文件夹中一些文件的简单截图。霍夫曼码比特流从偏移量 0x0000027C 到末尾,您可能会看到重复模式的实例之一,例如偏移量 0x0001604A
pdf - 在 Google 文档查看器中显示比特流
我一直在使用 iframe 将 Google Docs Viewer 嵌入到我的 DSpace 实例中,这是一个在线数字存储库。
这是我的网站链接: http: //202.78.89.123 :8081/xmlui/handle/123456789/145
DSpace 为存储库中的每个项目/pdf 生成比特流链接。当我单击预览链接时,我的页面中会出现一个 iframe,但不会加载任何文档。但是,当我将 iframe 的源更改为 pdf 路径文件时,该文件可在世界范围内公开访问,而不是比特流,查看器会加载该文档。
我已经尽我所能,从检查我的网络服务器是否可以被谷歌文档查看器公开访问。我的网络服务器是可公开访问的,我怀疑 Google Docs Viewer 不再支持比特流?如果这是真的,那么我将如何在我的页面内的 iframe 中显示 pdf 文件?任何的想法?
下面是我的页面,上面写着“抱歉。没有可用的预览”
dataformat - 解释比特流在 DSpace 中的重要性
有人可以简明扼要地向我解释一下:
- 什么是比特流?
- 什么是比特流格式?
- 比特流和比特流格式的重要性是什么?
- 什么是比特流格式转换?
- 为什么我们必须实现比特流格式转换?
谢谢。
scalability - 如何在 JSVM 中生成 AVC 比特流的跟踪文件?
我被这个问题困扰了大约一个月。
我想在 JSVM 中生成 AVC 比特流的跟踪文件。它总是显示:“未找到可扩展性 SEI 消息!提取器退出。”
请帮助我。
埃尔文
c - 可变长度霍夫曼代码的比特流 - 如何写入文件?
我正在使用 C 语言进行 Huffman 编码/解码项目,并且对算法应该如何存储有关 Huffman 树的信息、在解码期间重新构建树以及使用可变长度代码解压缩到原始输入文件有很好的理解.
当写入我的压缩文件时,我将输出一个包含唯一频率的 256 个 4 字节整数的表,我知道我还必须找出一种处理 EOF 的方法——稍后再担心。
我的问题是我应该如何完成必要的按位操作,将可变长度代码流写入 fwrite 的一系列 1 字节迭代。
如果我创建了以下(虚构的)代码:
“abcd”的比特流是:
我知道我需要使用一些按位操作将这个流“切”成可写字节:
根据代码长度创建 8 个不同案例的第一次尝试效果不佳,我被难住了。写入文件时是否有更简单的方法来处理可变长度代码?
谢谢
c# - CodeProject C# 比特流类给出零数组
我正在尝试使用来自 CodeProject.com 的 Bill Koukoutsis 的 BitStream 库将一大块数据从 8 位打包转换为 7 位打包,这似乎仍然是 C# 中此类事情的首选来源。我正在使用的代码如下(fs 是在代码之外初始化的文件流):
运行时,这会产生一个恒定的“好块 => 零块”流。因此,由于某种原因,BitStream 将零输出到 theCodedBlock 数组中。从代码中其他地方的内存数组读取值似乎可以正常工作,所以我做错了什么还是这是一个 BitStream 错误?
c++ - 比特流解析和字节序
我正在尝试解析比特流,但我无法理解字节序。我有一个字节缓冲区,我需要能够读取不同长度的位域,主要是从 1 位到 8 位。
我的问题来自字节的字节顺序。当我使用调试器单步执行时,底部 4 位似乎位于字节的顶部。也就是说,我期望前两位为 10(它们必须为 10),但是,当使用调试器检查时,位流中的第一个字节是 0xA3 或 1010 0011。意思是,假设这些位是“正确”的顺序,前两位实际上是 11(从右到左读取)。
然而,如果这些位的顺序不正确,应该是 0x3A 或 0011 1010,那么我有 10 作为我预期的前两位。
这让我感到困惑,因为它似乎不是位顺序的问题,MSb 到 LSb/LSb 到 MSb,而是半字节顺序。这是怎么发生的?这似乎只是它从文件中出来的方式。有可能这是一个无效的比特流,但我之前在 Hex Editors 中读取文件时看到过这种事情,似乎以“错误”的顺序轻咬。
我只是很困惑,希望得到一些帮助来理解发生了什么。我不经常处理这个级别的事情。
java - 在二进制文件中保存/读取整数矩阵并读取它们
我想知道如何将整数矩阵保存到二进制文件中并将它们读回。
矩阵可能类似于
我能够以二进制形式保存它,但我不确定我应该如何再次读取它们并能够区分每一行(矩阵可能有超过 4 列,我只是随机选择了这一列)。
顺便说一下,在上述矩阵的情况下,生成的文件是16 位吗?
send - 在 FPGA 板上发送比特流
我需要能够在 FPGA 板上发送比特流。
我使用 Altera Cyclone III 开发板,我正在寻找 Quartus 上的一个选项,例如发送比特流,但我在软件和 Internet 上都没有找到。
linux - Bit Bang with SPI (fwirte, write performance)
我有一个有点爆炸的代码,允许我通过 SPI 线路发送大约 4 兆的数据。它使用 Linux 内核的定制硬件的嵌入式代码。
问题是这需要很长时间(4 小时),这很可能是因为内核正在做更多的事情。基本上我的代码是这样的(aprox):
这是一个非常简单的位爆炸,但我注意到,如果我使用 write 将数据发送到 linux gpio 处理程序/sys/class/gpio/gpioXX/value
(其中 XX 是任何 gpio 编号),则需要 4 小时。但如果我fwrite()
用于发送到同一设备,则需要 3 个小时。但是,如果您write()
仅用于启用(SPI_stop()
和 SPI_ start()
)并fwrite()
用于发送到 MISO、CLK,则只需 1 小时 30 分钟。
那么,以此为基础,有人可以向我解释这是怎么回事吗?我的想象力说这是处理线程的方式,并且在每个软件周期中它解析 2 个线程(fwrite()
和write()
)而不是如果只是使用的功能之一,但现在我仍在调查,有人可以让我知道任何类型的信息? 有没有更好的方法来处理这个?
仅供参考 ,不能使用内核驱动程序 spi,因为硬件已连接到 gpios,并且使用 bit bang 是强制性要求,但我接受任何建议
提前致谢
编辑
嘿,伙计们,感谢您的评论,看来我遇到了一个问题(非常愚蠢),我每次要向其发送数据时都创建了文件描述符,sys/class/gpio/gpioxx/value
这就是为什么速度很慢。还要关闭一些其他程序,传输时间会飙升到 3 分钟而不是 1 小时 30 分钟(使用 write())。感谢和抱歉