ホームページ バックエンド開発 Golang golangで文字列をバイト配列(byte)に変換する方法

golangで文字列をバイト配列(byte)に変換する方法

Mar 22, 2023 pm 02:22 PM
golang 言語を移動

Go 言語は、さまざまな分野、特にサーバーサイド開発で広く使用されている効率的なプログラミング言語です。中でも文字列処理は Go 言語の重要な部分です。この記事では、文字列をバイト配列(byte)、つまりgolangの文字列をバイトに変換する方法を紹介します。

  1. バイト配列とは何ですか?

Go 言語では、バイト配列 (byte) は一連の整数で構成される配列です。各整数は文字に対応し、この文字は ASCII コード テーブル内の整数に対応する文字によって表されます。したがって、バイト配列は文字エンコーディングで構成される配列とみなすことができ、さまざまな文字列処理シナリオで使用できます。

  1. 文字列をバイト配列に変換するメソッド

Go 言語には、文字列をバイト配列に変換する 2 つのメソッドが用意されています。1 つは型変換を実装する方法です。もう 1 つは標準ライブラリの関数を通じて実装されます。

(1) 型変換方法

Go言語におけるstringは文字列からなる不変型です。 Byte は、一連の整数で構成される変数タイプです。したがって、型変換を通じて文字列型をバイト型に変換できます。つまり、

str := "hello world"
bytes := []byte(str)
ログイン後にコピー

上記のコードでは、最初に文字列 str を定義し、次に を渡します。 [ ]byte(str) メソッドを使用してバイト配列 bytes に変換します。バイト配列は可変型であり、変更できることに注意してください。

(2) 関数の変換方法

Go 言語では、型変換以外にも、文字列をバイト配列に変換するための標準ライブラリ関数が多数提供されています。最も一般的に使用される関数は []byte 関数と string 関数で、それぞれ文字列をバイト配列に変換し、バイト配列を文字列に変換できます。

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 の小さな配列に分割します。最後に、すべての小さな配列を 2D 配列 chunks に保存し、出力します。

(2) 圧縮文字列

文字列をバイト配列に圧縮して、圧縮効果を実現できます。圧縮の原理は、文字列内の同じ文字をカウント値と文字に置き換えることです。たとえば、文字列 aaabcc は、バイト配列 []byte{3, 97, 1, 98, 2, 99} に圧縮できます。これは、 が存在することを意味します。文字列 3 'a's、1 'b's、および 2 'c's。

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 に圧縮されます。最後に、圧縮されたバイト配列を出力します。

  1. 概要

Go 言語では、文字列をバイト配列に変換することは基本的な操作であり、さまざまな文字列処理で使用できます。シナリオ。この記事では、文字列をバイト配列に変換する 2 つの方法、型変換と関数変換を紹介しました。さらに、バイト配列の分割や文字列圧縮など、バイト配列のいくつかのアプリケーション シナリオも紹介しました。バイト配列は ASCII エンコードにのみ適しているため、文字列に他のエンコード文字が含まれている場合、文字化けが発生する可能性があることに注意してください。

以上がgolangで文字列をバイト配列(byte)に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang データベース接続用の接続プールを構成するにはどうすればよいですか? Golang データベース接続用の接続プールを構成するにはどうすればよいですか? Jun 06, 2024 am 11:21 AM

Golang データベース接続用の接続プールを構成するにはどうすればよいですか?

Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Jun 06, 2024 pm 05:14 PM

Golang を使用してファイルを安全に読み書きするにはどうすればよいですか?

Golang と C++ の類似点と相違点 Golang と C++ の類似点と相違点 Jun 05, 2024 pm 06:12 PM

Golang と C++ の類似点と相違点

Golang フレームワーク アーキテクチャの学習曲線はどれくらい急ですか? Golang フレームワーク アーキテクチャの学習曲線はどれくらい急ですか? Jun 05, 2024 pm 06:59 PM

Golang フレームワーク アーキテクチャの学習曲線はどれくらい急ですか?

Golangでリストからランダムな要素を生成するにはどうすればよいですか? Golangでリストからランダムな要素を生成するにはどうすればよいですか? Jun 05, 2024 pm 04:28 PM

Golangでリストからランダムな要素を生成するにはどうすればよいですか?

golangフレームワークの長所と短所の比較 golangフレームワークの長所と短所の比較 Jun 05, 2024 pm 09:32 PM

golangフレームワークの長所と短所の比較

Golang フレームワークでのエラー処理のベスト プラクティスは何ですか? Golang フレームワークでのエラー処理のベスト プラクティスは何ですか? Jun 05, 2024 pm 10:39 PM

Golang フレームワークでのエラー処理のベスト プラクティスは何ですか?

golang フレームワークの利点は何ですか? golang フレームワークの利点は何ですか? Jun 06, 2024 am 10:26 AM

golang フレームワークの利点は何ですか?

See all articles