Goでバイトをfloat32配列に変換するにはどうすればよいですか?

王林
リリース: 2024-02-06 08:33:08
転載
879 人が閲覧しました

Go 中如何将字节转换为 float32 数组?

質問の内容

Python スクリプトから Elasticache Redis クラスターに、次に Elasticache からバイト形式の数値の float32 配列を書き込んでいます。 Go スクリプト バイトを (文字列として) 読み取ります。 Go スクリプトで文字列としてのバイトを元の float32 配列に変換するにはどうすればよいですか?

Python の例:

リーリー

これは私が Go (プレイグラウンド) で試したことの例です

import numpy as np
import redis
a = np.array([1.1, 2.2, 3.3], dtype=np.float32)
a_bytes = a.tobytes(order="C") #I have also tried order="F" with no luck
print(a_bytes) #Output: b'\xcd\xcc\x8c?\xcd\xcc\x0c@33S@'
redis_client = redis.cluster.RedisCluster(host=<elasticache config endpoint>, port=6379)
redis_client.mset_nonatomic({"key1": a_bytes})
ログイン後にコピー

正解


使用したコード例は「16進数を文字列に変換する」です;生のバイトがあります(aHexに基づいていると思います: CDCC8C3FCDCC0C4033335340) ) なので、直接変換する方が簡単です (ただし、バイトを 16 進文字列に変換してから変換を行うこともできますが、不必要な作業や複雑さが追加されるだけです)。

この回答から、(プレイグラウンド):が得られます。 リーリー

更新された参考コメント:

あなたが受け取ったものについてはまだ少し混乱しているので、これら 2 つの可能性を試してみましょう。

Redis クエリが生データ (バイト) を go 文字列 (つまり、

"\xcd\xcc\x8c?\xcd\xcc\x0c@33S@") として返す場合は、 [] バイト (Playground) に変換します リーリー

Redis が ASCII (/UTF-8) 表現を含む文字列 (つまり、

CDCC = []byte{0x41, 0x44, 0x43, 0x43}) を返す場合、最後の An簡単な方法は、encoding/hex( playground) を使用してこれをデコードすることです。 リーリー

元のアプローチが機能する可能性があることに注意してください。ただし、上記のコメントで指摘されているように、以下が機能するように

エンディアンネス に対処する必要があります (playground - ことができます)効率の向上、私の目的は明確にするためです): リーリー

ただし、これはコードを実行する CPU についての前提を置いているため、前の回答の方が望ましいことを意味します。

以上がGoでバイトをfloat32配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート