Octet String:这是什么?

时间:2009-08-06 20:29:06

标签: networking

我开始研究一些我即将接手的项目的网络编程概念,并且我一直在探讨这个八位字节串的概念。任何人都可以提供一些反馈,了解它是什么,以及它与网络编程有何关系?

9 个答案:

答案 0 :(得分:48)

Octet = byte。

Octet string =字节序列。

另请参阅Wikipedia

答案 1 :(得分:22)

“Octet”是“8位字节”的标准。与“byte”相比,它应该是一个不那么模糊的术语,因为有些平台具有不同宽度的字节(不确定是否还有剩余,但它们曾经存在)。

答案 2 :(得分:17)

假设二进制00000000到11111111的表示形式为十六进制的0x00到0xFF。然后octetString只是00到FF。

将几个八位字节组合成一个字符串就像0x00 0x01 0x02 ...或者只是000102 ..作为八位字符串。

二进制文件可以编码为八位字节串,并以包含0-F字母的ASCII字符串形式从webbclient发送到服务器,如a8b9457fc6e3e410589f或它的大写字母。有一些使用BASE-64编码的javascript用于在Strings中存储图片。较大的字母表,在这种情况下(我认为)A-Z,a-z,0-9,需要传输的数据越少。每个八位字节有256个不同的可能值,并且要以62个字母的字母存储,显然需要使用多个字母/八位字节。可能理论数与log62(256)成正比。

结论是,改进的可读性比二进制版本占用更多的空间,在八位组的例子中它是两倍长,因为每个ascii char是8位,2个字符(16位)表示八位的八位字节。效率很低。

答案 3 :(得分:6)

八位字符串:

它是有限8位模式下的信息表示。在将数据从电子设备的点传输到另一个设备点或任何其他设备的过程中,需要将它们转换为最小尺寸的包。因此它用于将主要数据划分为小型且系统可理解。例如: 因此,二进制101001111000中的整数2680将转换为该7位格式,如下所示:

Remaining integer-------------------encoded bytes

101001111000------------------------

10100-------------------------------01111000

0-----------------------------------11111000&安培; 00010100

其中,(120)(20)分别表示为十进制。 那么将120除以16得到的结果= 7&提醒= 8 再次将20乘16除以商店结果= 1&提醒= 4

新的数字形式是0X78 + 0X14

这里78& 14是Octet String。

将它们编码为正常阶段:((16 * 7)+8)* 128 ^ 0 +((16 * 1)+4)* 128 ^ 1 = 2680

我认为这是更好的解释,但我仍然在寻找更多。请帮我搞定字母。我认为这取决于它的ASCII值。

答案 4 :(得分:5)

计算机中的一组8位称为八位位组。对于大多数实际用途,字节是相同的,但在所有计算机体系结构上不等于8位。 更多内容可以在这里找到.. Link

答案 5 :(得分:2)

Octet是在计算机中提及8位数据的术语。 Byte是提及在计算机中编码字符串字符所需的位数的术语。

Octet总是8位。但Byte大小取决于硬件。大多数系统都支持ASCII编码字符串的方式。在那些机器Byte中,大小为8位。一些unicode支持硬件使用16位作为一个Byte

答案 6 :(得分:2)

可变长度的八位字节序列,如抽象语法表示法一(ASN.1),被称为八位字符串。

答案 7 :(得分:0)

这是一个python3代码,用于将十进制转换为OctetString: 很简单

Number = 2680
Bin = format(Number, 'b')
Sp = [hex(int(Bin[::-1][i:i+7][::-1],2)) for i in range(0, len(Bin), 7)]
print(Sp)

答案 8 :(得分:0)

术语“八位字节”用于避免歧义,因为一些旧计算机每字节的位数不同。

与名称所暗示的不同,此数据类型是 "aggregations": { "by_user_id": { "after_key": { "group_by_search": 2 }, "buckets": [ { "key": { "group_by_search": 1 // note this }, "doc_count": 2, "list_names": { "hits": { "total": { "value": 2, "relation": "eq" }, "max_score": 1.0, "hits": [ { "_index": "66362501", "_type": "_doc", "_id": "1", "_score": 1.0, "_source": { "usernames": 1 // note this } }, { "_index": "66362501", "_type": "_doc", "_id": "2", "_score": 1.0, "_source": { "usernames": 2 // note this } } ] } } }, { "key": { "group_by_search": 2 }, "doc_count": 1, "list_names": { "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1.0, "hits": [ { "_index": "66362501", "_type": "_doc", "_id": "3", "_score": 1.0, "_source": { "usernames": 3 } } ] } } } ] } } ,但可以存储任何基于字节的数据类型(包括二进制数据)。

下面是一个基于 Java 的类,它尝试将 Decimal 转换为其 OctetString。

not limited to string values

}