Networking 八进制字符串:它是什么?

Networking 八进制字符串:它是什么?,networking,Networking,我开始为我即将接手的一个项目研究一些网络编程概念,我不断地接触到八进制字符串的概念。是否有人能提供一些反馈,说明这是什么,以及它与网络编程的关系?Octet=byte 八位字节字符串=字节序列 另外,请参见。“八位字节”是“8位字节”的标准格式。与“字节”相比,它应该是一个不那么模棱两可的术语,因为有些平台有不同宽度的字节(不确定是否还有剩余的字节,但它们过去是存在的)。计算机中由8位组成的组称为八位字节。一个字节在大多数实际应用中是相同的,但在所有计算机体系结构中不等于8位。 在这里可以找到更

我开始为我即将接手的一个项目研究一些网络编程概念,我不断地接触到八进制字符串的概念。是否有人能提供一些反馈,说明这是什么,以及它与网络编程的关系?

Octet=byte

八位字节字符串=字节序列


另外,请参见。

“八位字节”是“8位字节”的标准格式。与“字节”相比,它应该是一个不那么模棱两可的术语,因为有些平台有不同宽度的字节(不确定是否还有剩余的字节,但它们过去是存在的)。

计算机中由8位组成的组称为八位字节。一个字节在大多数实际应用中是相同的,但在所有计算机体系结构中不等于8位。
在这里可以找到更多

八位字节是指计算机中的8位数据
Byte
是指在计算机中编码字符串所需的位数


Octet
始终为8位。但是
字节
大小因硬件而异。大多数系统都支持ASCII方式的字符串编码。在这些机器中,
字节
大小为8位。一些支持unicode的硬件使用16位作为一个
字节

假设二进制00000000到11111111表示为十六进制的0x00到0xFF。那么八进制字符串就是00到FF

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

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


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

在抽象语法符号1(ASN.1)中,可变长度的八位字节序列称为八位字节字符串。

八位字节字符串:

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

剩余整数-----------------编码字节

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

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

0--------------------11111000
&
0000100

分别表示为(120)(20)的十进制数。 然后将120除以16,存储结果=7&提醒=8 再次将20除以16,结果为1,提示为4

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

这里78和14是八进制字符串

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


我认为这是更好的解释,但我仍然在寻找更多关于它的信息。请帮我了解一下字母表。我认为这取决于它的ASCII值。

下面是一个用于将十进制转换为八进制字符串的python3代码: 很容易

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)
术语“八位字节”用于避免歧义,因为一些旧计算机每字节的位数不同

与名称不同,此数据类型不限于字符串值,而是可以存储任何基于字节的数据类型(包括二进制数据)

下面是一个基于Java的类,它尝试将十进制转换为其八进制字符串

public class deboctetstring {

private String findOctet (int num) {

    int rem;
    String output ="";
    char ind[] = {0,1,2,3,4,5,6,7};
    while (num > 0) {
     
        rem = num%8;
        output = ind[rem] + output;
        num = num/8;

    }  
    
    return output;
}

public static void main(String[] args) {
    System.out.println("Start octet test");
    deboctetstring deboct = new deboctetstring();
    int x = 72;
    String octetval = deboct.findOctet(x);

    System.out.println("Octet Value of Decimal "+ x + " is: "+ octetval );
}

}

例如,这可能意味着一个(1字节)字符序列?像一个c字符串(当然除了空终止)?