问题标签 [8-bit]

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.

0 投票
2 回答
688 浏览

python - win32api:获取位图调色板

我基本上是这样做的,但是是 8 位的。我可以使用“P”作为模式位正确获取位图位。但是,我有所有这些位图位,但没有调色板——PIL 只使用默认的灰度调色板。如何从图像中获得正确的调色板?

0 投票
3 回答
3971 浏览

c++ - 4x8 位整数到 32 位整数

我有

我需要将它转换为一个 _int32,使用 arr[0] 作为第一部分 <..> 和 arr[3] 作为最后一部分。最后应该是

我应该使用位移或类似的东西来实现这一点吗?

0 投票
1 回答
2458 浏览

email - 将 8 位 MIME 消息转换为引用打印

将包含原始 8 位部分的 MIME 电子邮件转换为仅包含 7 位部分的符合 RFC822 的邮件的最简单方法是什么?
这些部分必须自动转换为“Content-Transfer-Encoding:quoted-printable”。

我的应用程序是用 Java 开发的。但是命令行工具会很棒。我尝试了reformime,但这个工具似乎有问题并且不能正确重写消息:-(

感谢您的帮助,
奥利维尔

0 投票
7 回答
3947 浏览

java - 在 Java 字符(16 位)中存储 UTF-8 字符(8 位)时如何避免内存浪费。二合一?

恐怕我对一个相当过饱和的主题的细节有疑问,我搜索了很多,但找不到一个明确的答案来解决这个特定的明显 - 恕我直言 - 重要的问题:

使用 UTF-8 将 byte[] 转换为 String 时,每个字节(8bit)都变成了 UTF-8 编码的 8 位字符,但在 java 中每个 UTF-8 字符都保存为 16 位字符。那是对的吗?如果是,这意味着每个愚蠢的 java 字符只使用前 8 位,并消耗双倍的内存?这也正确吗?我想知道这种浪费行为是如何被接受的。

有一个 8 位的伪字符串没有什么技巧吗?这实际上会导致更少的内存消耗吗?或者,有没有办法在一个java 16位字符中存储>两个< 8位字符以避免这种内存浪费?

感谢您提供任何令人困惑的答案...

编辑:嗨,谢谢大家的回答。我知道 UTF-8 的可变长度属性。但是,由于我的源是 8 位字节,我理解(显然是错误的)它只需要 8 位 UTF-8 字。UTF-8 转换是否实际上保存了您在 CLI 上执行“cat somebinary”时看到的奇怪符号?我认为 UTF-8 只是以某种方式用于将字节的每个可能的 8 位字映射到 UTF-8 的一个特定的 8 位字。错误的?我考虑过使用 Base64 但这很糟糕,因为它只使用 7 位..

重新制定的问题:有没有更聪明的方法将字节转换为字符串?可能最喜欢的是将 byte[] 转换为 char[],但我仍然有 16 位字。

其他用例信息:

我正在改编Jedis(NoSQL Redis 的 java 客户端)作为 hypergraphDB 的“原始存储层”。所以,jedis是另一个“数据库”的数据库。我的问题是我必须一直为 jedis 提供 byte[] 数据,但在内部,>Redis<(实际的服务器)只处理“二进制安全”字符串。由于 Redis 是用 C 编写的,因此 char 是 8 位长,AFAIK 不是 7 位的 ASCIII。然而,在 Jedis 和 Java 世界中,每个字符的内部长度都是 16 位。我还不明白这段代码,但我想 jedis 然后将这个 java 16 位字符串转换为符合 Redis 的 8 位字符串(([这里] [3])。它说它扩展了 FilterOutputStream。我希望绕过byte[] <-> 字符串转换并使用那个Filteroutputstream ...?)

现在我想知道:如果我必须一直相互转换 byte[] 和 String,数据大小从非常小到可能非常大,在 java 中将每个 8 位字符作为 16 位传递是否会浪费大量内存?

0 投票
1 回答
392 浏览

python - 以文本模式打开文件会导致 Python 中的数据丢失:为什么?

文档中codecs.open()提到

即使未指定二进制模式,文件也始终以二进制模式打开。这样做是为了避免由于使用 8 位值进行编码而导致的数据丢失。

对文件使用文本模式如何导致“数据丢失”?听起来在文本模式下打开文件可能会将字节截断为 7 位,但我在文档中找不到任何提及:文本模式仅被描述为转换换行符的一种方式,没有提及一些潜在的数据失利。那么,文档是codecs.open()指什么?

PS:虽然可以理解将自动换行符转换为依赖于平台的换行符编码需要一些小心,但问题是关于 8 位编码的具体内容。我会猜到只有一些编码与自动换行符转换兼容,无论它们是 8 位还是 7 位编码。那么,为什么 8 位编码在codecs.open()的文档中被单独列出呢?

0 投票
1 回答
500 浏览

colors - 为什么这个 .bmp 图像中 0x1C 处的 bpp 信息有误?

十六进制编辑器

地址 1D 表示图像是每个像素 8 位,但不是,每个像素由 3 个字节(24 位)表示。

起初,我认为 Photoshop 这样做是错误的,但我发现这种格式用于所有灰度图像。

为什么 .bmp 图像不使用 4 个字节作为像素,而是使用 0 - FF 的值来描述每个像素的灰度值?

编辑:我能够回答我自己关于文件结构的问题

来自维基百科

每像素 8 位 (8bpp) 格式支持 256 种不同的颜色,每 1 个字节存储 1 个像素。

每个字节是最多 256 种颜色表的索引。此颜色表采用 32bpp 8.8.8.0.8 RGBAX 格式。

十六进制编辑器中显示的颜色表是每个像素四个字节。

远低于实际像素阵列,即每像素 8 位。

实际的像素阵列

我通过计算得出,图像是 64 x 64, 4096 像素。

像素数组从 436 开始,到 1437 结束。在十进制中,这两个数字之间的差为 4097,因此像素数组正好是每个像素一个字节。

不过,我仍然很好奇为什么灰度图像需要颜色表

0 投票
2 回答
328 浏览

mysql - 为什么使用 Ruby 将 AES 加密字符串保存为空白到 MySQL 表?

我有一个名为 Encryption 的模型,它生成一个 AES 加密字符串并将其保存到一个名为加密的数据库表中。我的加密表架构如下:

但是,当我在我的加密模型实例上调用 .save 时,encryption.encryption (在数据库中)的值为空白('')。

以下是模型的内容:

如您所见,它确实在模型中具有价值。关于为什么该字段在数据库中保存为空白的任何想法?

0 投票
2 回答
3881 浏览

perl - Perl 十进制到二进制 32 位然后 8 位

我有一个数字(3232251030)需要从十进制转换为二进制。一旦我得到二进制文件,我需要将它的 8 位分成数字,显示一个 IP 地址。

将十进制转换为二进制很简单:

参考:http ://www.perlmonks.org/?node_id=2664

所以现在,我需要从二进制文件中拆分出 8 位数字并将其保存为构成 IP 地址的数字。

($num 是二进制的“11000000 10101000 01000100 00001110”)

我需要将每个 8 位“11000000 10101000 01000100 00001110”拆分并保存为“192.168.60.150”。

愿意建议吗?我正在为此研究拆分功能..

0 投票
3 回答
16111 浏览

c - 如何将 24 位 RGB 转换为 8 位 RGB

我想知道将 24 位 RGB 颜色(每种颜色 8 位)转换为 8 位颜色(2 位蓝色、3 位绿色、3 位红色)的最佳方法是什么。我想要 C 代码来执行此操作。

0 投票
3 回答
1749 浏览

optimization - 什么是桌面 cpu 上的 8 位寄存器?

通读以下指令表手册,我发现整数乘法通常要快得多8-bit registers

在普通桌面cpu的上下文中,是什么8-bit register意思?存储在 32 位寄存器中的值恰好在 8 位范围内?没有实际的 8 位寄存器,对吧?