問題タブ [data-corruption]

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.

0 投票する
1 に答える
109 参照

c++ - クラス関数はメンバー値を保存しません

何らかの理由で、関数は最初のものを除いてオブジェクトの配列のメンバー値を保存しません。この問題の性質を強調するためにコードを要約しました。

classFile.cpp

classFile.h

呼び出し関数ファイル.cpp

の誤った出力はobjectArray[elementID].myX、特定の場合は常に同じですelementIDが、他の では異なりelementIDます。0 の場合もあれば、8231924021 のような場合もあります。

編集:これは、関連する部分が上部に書かれた元のコードです(実際に実行するには長すぎるというニュアンスに気付いた場合): classFile.hclassFile.cppfunctionCallingFile.cpp

Edit2: クラスメンバーの位置がメモリ内で各オブジェクトごとに 3 バイトシフトされているように見えるため、最初のものを除いてそれらを読み取ることができなくなります。myXアドレスとobjectArray[i].myXアドレスの比較は次のとおりです-pastebinLink

この 3 バイトのシフトを手動でカウンターすることもできますが、それは洗い流すのではなく、デオドラントをトイルドにスプレーするようなものです。

Edit3: 問題を解決したのは、#include "classFile.h"callingFunctionFile.cpp ファイル内の位置を変更することでした。最初のインクルードとして一番上に配置した後、問題は消えました

0 投票する
0 に答える
417 参照

matlab - fprintf オクターブ - データ破損

.txt ファイルにデータを書き込もうとしています。各ファイルは約 170MB です (データを書き込んだ後)。

浮動小数点値をファイルに書き込むために「%.8f」を使用して、オクターブの fprintf 関数を使用しています。ただし、一部のファイルのエントリのサブセットが破損しているという非常に奇妙なエラーに気付きました。たとえば、ファイル内の行の 1 つを次に示します。

0.43529412,0.}4313725,0.43137255,0.33233533,...

その「}」は「4」である必要がありました。そもそも、オクターブの fprintf はどのようにして「}」を '%.8f' オプションで書き込んだのでしょうか? 何がうまくいかないのですか?

別の例は、

0.73289\8B987、...

その「\8B」はどうやってそこにたどり着いたのですか?

合計 3 億 6000 万点の非常に大きなデータセットを処理する必要があります。一部のファイルの行のサブセットにおけるこのエラーは、大きな問題になりつつあります。この問題の原因は何ですか?

また、この破損はランダムに発生するわけではありません。たとえば、ファイルに 110 万行あり、各行がデータ インスタンスを表すベクトルに対応している場合、問題は最大 100 行で発生し、これらの 100 行は一緒にクラスター化されます。たとえば、これらは行 8000 から 8150 に分散されているとしますが、100 行の破損した行のうち、最初の 50 行がたとえば 10000 行目の近くにあり、残りがたとえば 20000 行目にあるというわけではありません。それらは常にクラスターを形成します。

注: 以下のコードは、データの抽出とファイルへの書き込みを担当するコード ブロックです。K_Cell などのコード内の一部の変数は、以前に計算されており、データ書き込みプロセスではほとんど役割を果たしません。

コード ブロックに注意してください。

データポイントをファイルに書き込むコードの唯一の部分です。

以前のコードブロック、

現在開いているファイルが 100 万データポイントの制限を超えた場合、データを書き込むために新しいファイルを開きます。

さらに、

変数には、float/double 値以外のものを含めることはできません。そうしないと、オクターブがエラーをスローします。

0 投票する
0 に答える
177 参照

r - R へのインポート時の csv および fwf ファイルのエラー (文字化け) を修正

かつてテープとして保存されていた大きなファイル (fwf および csv) からデータをインポートしているため、テープの読み書き時にエラーが発生する可能性があります。

古いファイルは固定幅ファイル (fwf) 形式です。新しいファイルは .csv 形式です (セパレータとして ";" を使用)。

エラーは次のようになります。

fwf ファイルの場合:

  • 破損した文字は、データのシーケンスのすべてを横向きにし、その時点からすべてのセルをコンテンツと一致させません。
  • 行末文字の欠落

csv ファイルの場合:

  • 壊れた文字
  • それ以外の場合は数値列の文字または文字が破損している
  • 意図しないセパレータ (予想よりも多くのセパレータにつながる (
    列数 - 1)

エラー行をスキップしてこれを R にインポートする方法はありますが、後で手動でチェックできるようにエラーのログを保持しますか?

または、R の外部にある別のツールを使用する必要がありますか? この場合、どのツールですか?

非常に大きなファイル(それぞれ90GB)が約100個あるので、これにはdata.table::freadベースのソリューション、またはその他の高速なソリューションをお勧めします。

0 投票する
0 に答える
208 参照

java - Android Java アプリの StringBuilder() からのデータの破損

このようなデータをフォーマットする Android アプリのコードがあります。"[x, y, z]".

ほとんどの場合、java の StringBuilder() クラスを使用し、次のような append メソッドを使用します。

ただし、場合によっては、次のようにプラス演算子を使用して基本的な文字列連結を行います。

最近、「]」文字がこれに変換されているのを見ている状況に遭遇しましたが、これ"Ԃ3ҡ嶴u)"は stringbuilder クラスを使用する場所でのみです。最初は正常に動作していましたが、この文字の変換を開始した後、文字がコード内の複数の場所で表示されるたびにこの変換が行われました。これにより、出力は次のようになります。"[ x, y, zԂ3ҡ嶴u)";

これは非常にまれな発生であり、これが発生するのを数回しか見たことがありませんが、ここの誰かがなぜこれが起こっているのか、またこれを防ぐためにできることがあれば考えてくれることを願っています. このようなまれな発生を修正するために、プロジェクトから stringbuilder を削除したくありません。

これは Android デバイスで確認されており、非常に突然始まりました。(正しく動作していたのに、突然 "]" の後続のすべてのインスタンスが変換されました)

これを防ぐためのアイデアや提案はありますか?残念ながら、このデータをテストに報告したデバイスにアクセスできません。

ありがとう!

- - - - - - - - - - - - 編集 - - - - - - - - - - - -

これと同じことに再び遭遇しました(これも StringBuilder() クラスで)が、今回は同じ文字"]""U".

したがって、出力は次のようになりました"[x, y, zU"

StringBuilder() クラスで時折問題が発生するのは、常に同じ文字 "]" のようです。(いつも最終キャラだから?)

乾杯!

- - - - - - - - - - - - 編集 - - - - - - - - - - - -

この動作を表示するために使用された 1 つのメソッドのサンプル: (最後の「]」のみに問題があり、残りの文字列は期待どおりに見えます)

0 投票する
0 に答える
268 参照

linux - 連続 0xFF データの読み取り中に Linux termios 関数のデータが破損する

termios 関数を使用するシリアルポート ttyS4 用のプログラムを 1 つ作成します。そのプログラムは非標準モードを使用しています。16 進データを送信でき、16 進データを読み取ることもできます。私の問題は、複数の 0xFF バイトを受信したデータを読み取っているときに、シリアル ポート バッファが追加の 0xFF バイトをガベージ形式で満たしたときです。私の送信データの例は

実際に受け取ったデータは次のとおりです。

追加で 3 個の 0xFF (ガベージ) を受け取りました。この問題は、複数バイト0xFFを受信したときに発生します。

ポートを設定するには、次の設定を行います。

この問題を解決する方法を提案してください。