問題タブ [bytestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 符号なしバイトストリームを符号付きバイトストリームに変換する Golang
Golangでバイトストリームをバイトストリームスライスに変換する最良の方法は何ですか? 現在、golang で Java プログラムを複製しようとしていますが、Java がバイトストリームを符号付きの値として読み取るのに対し、golang はそれを符号なしの値として扱うという事実に問題があると思います。
Java で印刷すると、負の値が異なることに注意してください。ポジティブは同じです:
ジャワ:
8| -8 | -58 |-61|-56|-113|42|16|-64|2|24|-16|1
ゴーラン:
8| 248 | 198 |195|200|143|42|16|192|2|2|240|1
現在、GO での私の実装は次のようになります。
Java では、実装はほとんど次のようになりました。
それを符号付き int にすばやく型キャストする簡単な方法がわかりませんでした (おそらく私が間違っているかもしれません)。各値を signed int に変換して、スライス全体を反復処理することもできますが、その方法はやや面倒です。また、それぞれを操作する必要があります。スライスを変換するよりクリーンな方法はありますか?
python - Logstash ハンドラーが TypeError をスローするのはなぜですか?
次のコードでカスタム ロガーを作成しています。
しかし、から返されたロガーを使用するとsetup_custom_logger、常にTypeError.
logger.info('hello')と で呼び出してみましlogger.info(b'hello')たが、両方のインスタンスで次のようになりました。
確かにタイプである'hello'ため、ロギングが機能しないことはある程度理にかなっています。'hello'str
ただし、b'hello'バイトのようなオブジェクトです。
このエラーが表示されるのはなぜですか? 私は python-logstash 0.4.6 と Python 3.5.1 を使用しています。
c# - ストリームの最後の 8 バイト以外のすべてのバイトを読み取る方法
次のコードがあります。
incomeはディスクに保存する必要があるストリームです。問題は、最後の 8 バイトを無視して、それより前のすべてを保存することです。収入ストリームは読み取り専用、転送専用であるため、そのサイズを予測できず、巨大なファイルが送信されるため、すべてのストリームをメモリにロードしたくありません。
どんな助けでも大歓迎です。
ocaml - Bigarray への OCaml バイト
doubleメモリ内に の配列または の配列を持つ C プログラムがありintます。C プログラムは、ZeroMQ を使用して対応するバイナリ データを OCaml プログラムに送信します。OCaml プログラムはいくつかの を受け取ります。これらをまたはbytesに変換したいと思います。これどうやってするの?bytesArray of intArray of float
haskell - Haskell でのバイト ストリームの効率的なストリーミングと操作
エンコードされた大きな(<bloblength><blob>)*バイナリ ファイルのデシリアライザーを作成しているときに、さまざまな Haskell の Produce-Transform-Consume ライブラリに行き詰まりました。これまでのところ、4 つのストリーミング ライブラリを認識しています。
- Data.Conduit : 広く使用されており、非常に慎重なリソース管理が行われています
- Pipes : 同様
conduit( Haskell Cast #6は と の違いをうまく明らかにしていconduitますpipes) - Data.Binary.Get : getWord32be などの便利な関数を提供しますが、ストリーミングの例は扱いにくいです
- System.IO.Streams : 一番使いやすいようです
Word32これは、ストリーミングをしようとしたときに問題が発生する場所の簡略化された例ですconduit。もう少し現実的な例では、最初Word32に blob の長さを決定する a を読み取り、次にその長さの lazyByteStringを生成します (その後、さらにデシリアライズされます)。しかし、ここでは、バイナリ ファイルからストリーミング形式で Word32 を抽出しようとしています。
プログラムの出力は、読み取られた Word32 の数だけです。最初のチャンク (約 32KiB) を読み取った後、ストリームが終了することがわかります。何らかの理由mbsでが neverであるため、チャンクが消費されたときにストリームを停止するものをNothing確認する必要があります。null bs明らかに、私のコンジットtransformは故障しています。ソリューションへの 2 つのルートが表示されます。
- はの
await2 番目のチャンクに行きたくないByteStreamので、次のチャンクをプルする別の関数はありますか? 私が見た例 (例: Conduit 101 ) では、これはどのように行われたかではありません - これは、セットアップの方法が間違っているだけ
transformです。
これはどのように適切に行われますか?これは正しい方法ですか?(パフォーマンスは重要です。)
更新:これを使用してそれを行う悪い方法は次のSystems.IO.Streamsとおりです。
「悪い」とは、時間と空間の要求が非常に高く、デコード例外を処理しないことを意味します。
go - The Go プログラミング言語で演習を実装する方法
演習 7.5:パッケージ内
のLimitReader関数はと バイト数をio受け取り、バイトの後にファイルの終わりの状態を報告するが、別のものを返します。実装します。io.Reader rnReaderrn
それを実装する方法は?
以下は私のコードです。正しくないことはわかっています。