問題タブ [bytestring]
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.
haskell - Haskell出力のリストに不思議な単語( "LPS")が表示される
私はHaskellに不慣れで、現実の世界で通常遭遇するいくつかのテストケースをいじろうとしています。次のテキストファイル「foo.txt」があるとします。
私は出力を生成しようとしています
私のコードは以下のとおりですが、出力に偽の「LPS」が含まれています...それが何を表しているのかわかりません。
testFunc "foo.txt"で呼び出されると、出力は次のようになります。
どんな助けでも大歓迎です!ありがとう。PS:ByteStringを使用します。これは、将来、大量のファイルで使用される予定です。
編集:
また、ghciで以下の行が異なる配置を示しているのに、出力リストが上記のようにグループ化されている理由([]でバインドされた各番号)についても戸惑います。
string - ByteString を ByteString で分割します (Word8 または Char ではなく)
次のように、CSV を単一の文字に分割する Haskell Data.ByteString.Lazy 関数が既にあることは知っています。
しかし、複数文字の ByteString で分割したい (Char ではなく String で分割するように):
解析する必要がある csv のようなテキスト ファイルに複数文字の区切り文字があり、個々の文字自体が一部のフィールドに表示されるため、区切り文字を 1 つだけ選択して他の文字を破棄すると、データ インポートが汚染されます。
私はこれを行う方法についていくつかのアイデアを持っていましたが、それらは一種のハックのようです (たとえば、3 つの Word8 を取り、それらがセパレーターの組み合わせであるかどうかをテストし、そうである場合は新しいフィールドを開始し、さらに再帰します)。とにかく車輪の再発明です。関数を最初から再構築せずにこれを行う方法はありますか?
haskell - 多くの種類の文字列 (ByteString)
アプリケーションのネットワーク トラフィックを圧縮したいと考えています。
(最新の?) "Haskell Popularity Rankings"によると、zlibはかなり人気のあるソリューションのようです。zlib のインターフェースはByteStrings を使用します:
これは、 、、および でString使用されるデータ型でもあります。readshowNetwork.Socket
したがって、文字列を圧縮するには、aStringを a に、ByteStringまたはその逆に変換する方法が必要です。hoogleの助けを借りて、次のことがわかりました。
それを使用しようとしています:
(?) にはさまざまな種類のByteString?があるため、失敗します。
だから基本的に:
- にはいくつかの種類があり
ByteStringますか? どのような種類で、その理由は? Strings をsに変換する「the」方法は何ByteStringですか?
ところで、私はそれがData.ByteString.Lazy.Char8'sByteStringで動作することを発見しましたが、私はまだ興味をそそられています。
haskell - mmaped ByteString を他の型にキャストしますか?
これはかなり異端的な質問かもしれませんが、System.IO.Posix.MMap を介してデータのファイルを mmap しcast、結果の ByteString を他の型の厳密な配列にマッピングできるかどうか疑問に思います。例えば。ファイルに double が含まれていることがわかっている場合、どうにかしてこの mmap されたデータを UArr Double に取得して、sumU などを実行し、仮想メモリ システムに IO を処理させることはできますか? これは基本的に、C++ コードで複数 GB のデータ セットを処理する方法です。これを行うための代替のより慣用的な方法も高く評価されました、ありがとう!
データに対してマルチコア処理を行う方法についての最高の追加ポイント:-)私が要求しているわけではありません。
haskell - Haskell の Parsec を使用して ByteString を解析する
Parsec を使用して文字列を解析することはできましたが、ByteString で同じことを行うことはできません。
Parsec を手動で文字列に変換せずに ByteStrings で動作させるにはどうすればよいですか?
これを達成するのは難しくないと感じています。私が間違っている?(Haskell初心者です^^)
ありがとう!
haskell - Haskell で Integer を ByteString に変換する方法
特定のバイナリ形式でデータをシリアライズしたいと考えています。Data.ByteString内部では sを使用しています。
問題は、使用するさまざまなデータ型を に変換する方法ByteStringです。String問題ないので使えencodeLazyByteString UTF8 "string"ます。Integerしかし、 s をByteStrings (ビッグエンディアン)に変換することも必要です。
その方法を知っている人や、Haskell とバイナリ形式を使用する良いヒントを持っている人はいますか?
ありがとう!
haskell - Haskell ByteString / Data.Binary.Get question
Data.Binary.Get と ByteString を使用しようとしていて、何が起こっているのか理解していません。私のコードは以下の通りです:
戻りタプルの 3 番目の項目、つまりペイロードに対して次のエラーが発生します。
Data.Binary.Get と ByteStrings の間の相互作用と、意図したことを実行する方法を説明してください。ありがとう。
performance - バイト文字列ターミネータを探す関数の Haskell 最適化
一部のコードのプロファイリングでは、約 65% の時間で次のコードの内部にいることがわかりました。
それが行うことは、Data.Binary.Get モナドを使用して、ターミネータを探してバイト文字列をウォークスルーすることです。0xff を検出すると、次のバイトが 0x00 かどうかをチェックします。そうであれば、0x00 を削除して続行します。0x00 でない場合は、両方のバイトが削除され、結果のバイト リストがバイト文字列に変換されて返されます。
これを最適化する明白な方法はありますか? 見えない。
haskell - Haskellでは、Lazy ByteStringでlengthを呼び出すと、文字列全体がメモリに強制的に入れられますか?
遅延バイト文字列を使用して大きなデータストリームを読み取っていますが、解析中に少なくともXバイト以上使用できるかどうかを知りたいです。つまり、バイト文字列が少なくともXバイトの長さであるかどうかを知りたいのです。
それを呼び出すとlength、ストリーム全体がロードされ、遅延バイト文字列を使用する目的が無効になりますか?
はいの場合、フォローアップは次のようになります。ストリーム全体をロードせずに、少なくともXバイトがあるかどうかを確認するにはどうすればよいですか。
編集:もともと私はファイルを読むという文脈で尋ねましたが、ファイルサイズを決定するためのより良い方法があることを理解しています。しかし、私が必要とする究極の解決策は、怠惰なバイト文字列ソースに依存するべきではありません。