如何在 Golang 中將以零結尾的位元組陣列轉換為字串?


在 Golang 中,位元組陣列是一系列位元組,字串是一系列 Unicode 字元。有時,您可能需要將以零結尾的位元組陣列轉換為字串。當處理以位元組陣列形式存在但需要作為字串處理的資料時,這很有用。在本文中,我們將學習如何在 Golang 中將以零結尾的位元組陣列轉換為字串。

瞭解以零結尾的位元組陣列

以零結尾的位元組陣列,也稱為 C 風格字串,是一系列以空位元組 (0x00) 結尾的位元組。空位元組用作字串終止符,指示字串的結尾。在 Golang 中處理以零結尾的位元組陣列時,您需要注意此空位元組,並確保您不將其包含在結果字串中。

將以零結尾的位元組陣列轉換為字串

要在 Golang 中將以零結尾的位元組陣列轉換為字串,您可以使用 string() 函式並向其傳遞一個不包含空位元組的位元組切片。以下是如何執行此操作的示例 -

示例

以下是一個示例 -

package main

import "fmt"

func main() {
   byteArray := []byte{'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', 0}
   str := string(byteArray[:len(byteArray)-1])
   fmt.Println(str)
}

輸出

Hello, World

在此示例中,我們定義了一個名為 byteArray 的以零結尾的位元組陣列,其中包含字串“Hello, World”。然後,我們使用 string() 函式將位元組陣列轉換為字串。我們將 string() 函式傳遞一個不包含陣列末尾的空位元組的位元組切片。我們透過使用 [:len(byteArray)-1] 語法來建立一個不包含陣列中最後一個位元組的位元組切片。然後,我們將結果字串賦值給 str 變數,並使用 fmt.Println() 函式將其列印到控制檯。

示例

這是另一個示例

package main

import (
   "fmt"
   "reflect"
   "unsafe"
)

func main() {
   // define a zero-terminated byte array
   data := []byte{'H', 'e', 'l', 'l', 'o', 0}

   // convert the byte array to a string using unsafe.Pointer
   str := *(*string)(unsafe.Pointer(&data))

   // print the string and its type
   fmt.Println("String:", str)
   fmt.Println("Type:", reflect.TypeOf(str))
}

輸出

String: Hello
Type: string

結論

在 Golang 中將以零結尾的位元組陣列轉換為字串是一項簡單的任務,可以使用 string() 函式和一個不包含空位元組的位元組切片來完成。通過了解以零結尾的位元組陣列的結構以及如何在 Golang 中使用它們,您可以將以位元組陣列形式存在的資料作為字串進行處理,從而使其更易於使用和操作。

更新於: 2023年4月20日

786 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告