問題タブ [atoi]
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 - byte[]を使用したJava高速atoi
フラット ファイルを読み取って処理するアプリケーションを開発しています。これらのファイルは、レコード内のすべてのフィールドに対して常に一貫したエンコーディングを使用するとは限らないため、バイトを読み取り/書き込みし、それらを文字列に変換するために必要なデコード/エンコードを回避する必要があると判断されました。
ただし、これらのフィールドの多くは単純な整数であるため、それらを検証する必要があります (実際に整数であり、特定の範囲内にあることをテストします)。byte[] を受け取り、それを int に変換する関数が必要です。すべての数字がプレーン ASCII であると想定しています。
最初に byte[] を CharBuffer に変換し、ISO-8859-1 または UTF-8 にデコードしてから Integer.parseInt() を呼び出すことでこれを実行できることはわかっていますが、それは多くのオーバーヘッドとパフォーマンスが重要であるように思えます。
したがって、基本的に私が必要としているのは、atoi() に相当する Java です。API 関数 (サード パーティの API を含む) を希望します。また、関数は何らかの方法でエラーを報告する必要があります。
補足として、日付/時刻を表すフィールドで同じ問題が発生しています (ただし、これらはよりまれです)。誰かが Java 用の高速な C ライクなライブラリについて言及できれば素晴らしいことです。
websocket - io文字列をintAtoiの無効な引数に移動します
Go言語でWebSocket接続から文字列を解析しようとしています。私は接続の両側を実装しているので、データ形式の仕様は私だけに依存しています。
これは(一般的に学習目的の)シンプルなアプリなのでActionId Data、ActionIdがであると思いましたuint8。BackendHandlerWebSocket接続のすべてのリクエストのハンドラーです。
プラットフォーム情報
コード:
すべての出力:(検査に使用したPrintlnに注意してください)
このエラーが発生したコードが見つかりませんでした。エラーコードが定義されている場合のみです(プラットフォームによって異なります)。コードを改善するための一般的なアイデアをいただければ幸いですが、主に変換の問題を解決したいと思っています。
これは私のバッファ->文字列変換とスライス操作に関連していますか(SplitAfterメソッドを使用したくありませんでした)?
編集
このコードは問題を再現します:
ファイルinputには含まれている必要があります0 2\r\n(ファイルの終わりによっては、他のOSでは異なって見える場合があります)。このコードは、次のように、再スライスの終了インデックスを追加することで修正できます。
c - Cで整数として配列に文字を追加する
C の配列に整数を追加しようとしていますが、ファイルから文字を読み取っているため、最初に整数に変換する必要があります。何らかの理由で、私のプログラムは動作を停止する前に起動しません。変換の問題だと思いますが、Cは初めてです。
新しい編集コード:
test.txt
私を正しい方向に向けてくれる人は素晴らしいでしょう。
c - 配列値が変更される
だから私は2つの問題があります:
これをコーディングするために netbeans を使用しています。
1 つ目は、c.sArr で設定している配列の値が 7 から乱数に変更されており、その理由がわかりません。
2 つ目は、netbeans でデバッグを実行しようとすると、コードで segfault が発生するのに対し、通常どおり実行すると発生しないことです。atoi 関数でセグメンテーション違反を起こします。
何が起きてる?
と
他のファイルは次のとおりです。
急いでコーディングしたので、奇妙なデバッグ ステートメントを許してください。
ありがとう
c - atoi()を使用してint型をInt32にキャストする方法
私はCコードの一部を持っています:
エラーが発生します:
理由がわかりませんか?私たちを手伝ってくれますか?
多分それは#includesの問題です:
sys/socket.hnetinet/in.harpa/inet.hstdio.hstdlib.hstring.hstrings.h
c - C: 文字で区切られた数字の char 配列を解析し、数字を整数に変換します
配列アラインメント プログラムによって作成された一部の文字列に問題があります (これはバイオインフォマティクス プロジェクトです)。アラインメント ファイルを解析する既存の C プログラムに機能を追加しようとしていますが、プログラムが作成する「不一致」文字列の解析で問題が発生しました。コンテキストを追加するために、アライメント文字列の例を
次に示します。
文字列を解釈する方法は次のとおりです。最初の 28 塩基が配列と一致し、次に「G」の不一致 (合計 29 番目の塩基)、次の 11 塩基の一致 (合計 40 番目の塩基)、「A」の不一致 (合計 41 番目の塩基) があります。 )、「C」の不一致 (合計 42 塩基) など...
不一致がある (つまり、文字列に数字ではなく文字が含まれている) ベース位置を見つけ、それを int 配列に格納して、後のサブルーチンでこれを検索できるようにする必要があります。
だからここで私の問題が出てきます。これを解析できると「思った」サブルーチンを書きましたが、出力から非常に奇妙なアーティファクトが得られます。注: 私のひどい雑然としたコードを許してください! 私は決して C プログラマーではなく、私のトレーニングはコンピューター サイエンスではありません。
したがって、私の問題は、上記でコメントしたセグメント (「ここでエラーが発生する場所です」) に到達すると、「前の」文字列に数字の 10 倍が含まれることです。たとえば、上記の例の文字列を使用すると、ループが最初にその領域に到達したとき、pre には "28" が含まれていると予想されますが、代わりに "280" が含まれています。したがって、atoi を使用して文字列を変換すると、予想よりも 10 倍高くなります。
私が見逃しているもの、またはここで知らない C の char 配列規則はありますか? 返信ありがとうございます。
arrays - stdinからCの配列に数値を取得する
stdinから配列に数値を取得しようとしています。stdinの最初の数値は、配列内の要素の数です(数値は任意のintにすることができます)。私は最初の番号を取得するためにこれを行いました:
次に、サイズnの配列を作成しました。今、私は残りすべてを通過する必要があります
配列に数値を追加します。数字は\tで区切られ、場合によっては\nも区切られます。どうすればいいですか?私は1時間考えていましたが、まだ機能するコードがありません。何か助けはありますか?ありがとう!
c - Cのポインターを使用した16進数変換がわかりません
だから私はこれにかなりイライラしており、私が間違っていることを正確に理解する唯一の方法は、あなたの素晴らしい人々に尋ねることだと感じています. 文字列 (数値を含む) を 16 進数に変換しようとしています。これが私のコードです(注、10-15から文字へのスイッチをまだ配置していません。これを実行したときに整数値が返されることを確認したかっただけです...運が悪い):
たとえば、300 を入力すると、@ が返されます。
私も試しました:
これは 300 に対して 3fa844e0 の 16 進値を返しますが、これも明らかに間違っています。助けていただければ幸いです。8進数でもこれを行う必要があるため、この概念を理解し、何が間違っているのかを確認する必要があります。
c - C 文字値算術
私はCを学ぶ「The C Programming Language」という本を読んでいてs[i] - '0' 、s[i]に格納されている文字の数値を与えると彼らが言った算術に出くわしました。よくわからなかったのですが、どうやって引き算で値を出すのでしょうか? 注 これは、数字の文字列を対応する数値に変換する atoi 関数で使用されます。ありがとう
python - Python で 2 つの数値を連結する最速の方法
Python に 2 つの文字列 (数字のみ) があるとします。たとえば、文字列 a と文字列 b です。数値 c = ab (したがって、整数部分と b 小数部分) を生成する最速の方法は何ですか?