Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne en tableau d'octets (octet) dans Golang

Comment convertir une chaîne en tableau d'octets (octet) dans Golang

PHPz
PHPzoriginal
2023-03-22 14:22:374846parcourir

Le langage Go est un langage de programmation émergent et efficace qui est largement utilisé dans divers domaines, notamment le développement côté serveur. Parmi eux, le traitement des chaînes est une partie importante du langage Go. Cet article explique comment convertir une chaîne en un tableau d'octets (octet), c'est-à-dire une chaîne Golang en octet.

  1. Qu'est-ce qu'un tableau d'octets ?

En langage Go, un tableau d'octets (byte) est un tableau composé d'une série d'entiers. Chaque entier correspond à un caractère, et ce caractère est représenté par le caractère correspondant à l'entier dans la table des codes ASCII. Par conséquent, un tableau d'octets peut être considéré comme un tableau composé d'encodages de caractères, qui peut être utilisé dans divers scénarios de traitement de chaînes.

  1. Méthode de conversion d'une chaîne en octet

Le langage Go propose deux méthodes pour convertir une chaîne en tableau d'octets : l'une via la conversion de type et l'autre via les fonctions de la bibliothèque standard.

(1) Méthode de conversion de type

En langage Go, la chaîne est un type immuable, qui consiste en une chaîne de caractères. L'octet est un type de variable composé d'une série d'entiers. Par conséquent, nous pouvons convertir le type de chaîne en type d'octet via la conversion de type, c'est-à-dire :

str := "hello world"
bytes := []byte(str)

Dans le code ci-dessus, nous définissons d'abord une chaîne str, puis passons []byte ( str) pour le convertir en un tableau d'octets bytes. Il convient de noter que le tableau d'octets est un type mutable et qu'il peut être modifié. str,然后通过[]byte(str)的方式将其转换为字节数组bytes。需要注意的是,字节数组是可变类型,它可以被修改。

(2)函数转换法

除了类型转换之外,Go语言还提供了许多标准库函数来实现字符串到字节数组的转换。其中最常用的函数是[]bytestring函数,它们分别可以将字符串转换为字节数组和将字节数组转换为字符串。

str := "hello world"
bytes := []byte(str)
str2 := string(bytes)

上述代码中,我们先将字符串str转换为字节数组bytes,然后又通过string(bytes)的方式将字节数组转换为字符串str2。需要注意的是,这种方法只适用于ASCII编码,如果字符串中包含其他编码字符,则可能会出现乱码。

  1. 字符串和字节数组的转换应用

将字符串转换为字节数组是Go语言中一项基础的操作,它不仅可以用于字符串和字节数组的相互转换,还可以用于各种字符串处理场景。下面我们来看几个常见的应用场景:

(1)字节数组拆分

字节数组可以被视作由一些整数构成的序列。因此,我们可以通过遍历字节数组,将其拆分成多个小数组:

str := "hello"
bytes := []byte(str)
chunks := [][]byte{}
chunkSize := 2
for i := 0; i < len(bytes); i += chunkSize {
    end := i + chunkSize
    if end > len(bytes) {
        end = len(bytes)
    }
    chunk := bytes[i:end]
    chunks = append(chunks, chunk)
}
fmt.Println(chunks)

上述代码中,我们定义了一个字符串str和字节数组bytes,然后将字节数组bytes拆分成大小为2的小数组。最后,我们将所有小数组存储在一个二维数组chunks中,并将其打印出来。

(2)压缩字符串

我们可以将一个字符串压缩为一个字节数组,达到压缩的效果。压缩的原理是将字符串中的相同字符替换为一个计数值和一个字符。例如,字符串aaabcc可以被压缩为字节数组[]byte{3, 97, 1, 98, 2, 99},它表示字符串中有3个‘a’,1个‘b’和2个‘c’。

str := "aaabcc"
outBytes := []byte{}
currentChar := str[0]
currentCount := 1
for i := 1; i < len(str); i++ {
    if str[i] == currentChar {
        currentCount += 1
    } else {
        outBytes = append(outBytes, byte(currentCount), byte(currentChar))
        currentChar = str[i]
        currentCount = 1
    }
}
outBytes = append(outBytes, byte(currentCount), byte(currentChar))
fmt.Println(outBytes)

上述代码中,我们定义了一个字符串str和一个空字节数组outBytes,然后按照上面的压缩算法将字符串str压缩为字节数组outBytes

(2) Méthode de conversion de fonctions
  1. En plus de la conversion de type, le langage Go fournit également de nombreuses fonctions de bibliothèque standard pour convertir des chaînes en tableaux d'octets. Les fonctions les plus couramment utilisées sont les fonctions []byte et string, qui peuvent respectivement convertir des chaînes en tableaux d'octets et des tableaux d'octets en chaînes. rrreeeDans le code ci-dessus, nous convertissons d'abord la chaîne str en tableau d'octets bytes, puis utilisons string(bytes) Convert byte tableau en chaîne str2. Il convient de noter que cette méthode ne fonctionne qu'avec le codage ASCII. Si la chaîne contient d'autres caractères codés, des caractères tronqués peuvent apparaître.
    1. Application de conversion de chaînes et de tableaux d'octets

      🎜🎜🎜La conversion de chaînes en tableaux d'octets est une opération de base dans le langage Go. Elle peut non seulement être utilisée pour les chaînes et la conversion mutuelle de tableaux d'octets. peut également être utilisé dans divers scénarios de traitement de chaînes. Jetons un coup d'œil à quelques scénarios d'application courants : 🎜🎜 (1) Fractionnement des tableaux d'octets🎜🎜Les tableaux d'octets peuvent être considérés comme des séquences composées de quelques entiers. Par conséquent, nous pouvons diviser le tableau d'octets en plusieurs petits tableaux en le parcourant : 🎜rrreee🎜Dans le code ci-dessus, nous définissons une chaîne str et un tableau d'octets bytes, et puis divisez le tableau d'octets <code>bytes en petits tableaux de taille 2. Enfin, nous stockons tous les petits tableaux dans un tableau 2D morceaux et l'imprimons. 🎜🎜(2) Compression de chaînes🎜🎜Nous pouvons compresser une chaîne dans un tableau d'octets pour obtenir un effet de compression. Le principe de la compression est de remplacer les mêmes caractères dans la chaîne par une valeur de comptage et un caractère. Par exemple, la chaîne aaabcc peut être compressée dans un tableau d'octets []byte{3, 97, 1, 98, 2, 99}, ce qui signifie qu'il y a 3 'a, 1 'b et 2 'c'. 🎜rrreee🎜Dans le code ci-dessus, nous définissons une chaîne str et un tableau d'octets vide outBytes, puis utilisons l'algorithme de compression ci-dessus pour compresser la chaîne strCompressé en tableau d'octets <code>outBytes. Enfin, nous imprimons le tableau d'octets compressé. 🎜🎜🎜🎜Résumé🎜🎜🎜🎜En langage Go, la conversion d'une chaîne en tableau d'octets est une opération de base, qui peut être utilisée dans divers scénarios de traitement de chaînes. Dans cet article, nous avons présenté deux méthodes de conversion d'une chaîne en tableau d'octets : la conversion de type et la conversion de fonction. En outre, nous avons également introduit certains scénarios d'application de tableaux d'octets, tels que le fractionnement de tableaux d'octets et la compression de chaînes. Il convient de noter que les tableaux d'octets ne conviennent qu'au codage ASCII. Si la chaîne contient d'autres caractères codés, des caractères tronqués peuvent apparaître. 🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn