問題タブ [unsigned-integer]

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 投票する
2 に答える
2708 参照

java - uintNデータ型をCからJavaに転送する(ソケットプログラミング)

Cで記述されたネイティブプログラムからSockets、つまりwinsockインターフェイスを介してデータを送信する必要があります。その後、そのデータはJavaプログラムによって受信されます。Javaプログラムは、順序を認識しているデータのパケットを受信し、何らかの処理を行います。これは、socket.Read()から受け取ったintを次のように受け取ります。client_socket.getInputStream().read()

Read()から返されたそのintデータの処理は、期待されるデータ型を取得するために解析されます。基本的には、受信したバルクデータのスライスです。read()関数が一度に4バイト(32ビットのjava intサイズ)を読み取ると想定することしかできません。そこで、その4バイト(Javaタイプではなく8ビット)を4つのJavaショートに分割して、それらが表す符号なしの値を正しく表現できるようにします。たとえばuint16が必要な場合は、4つのショーツを入手した後、2つのショーツを連結します。

問題は、どこかで間違ったビット操作を行っていて、思ったように機能していないことです。CコードとJavaコードは以下のとおりで、機能しませんが、非常に単純です。出力は、なぜそれがそのようになっているのか理解できないものです。

Cコードは初期化部分を編集しました:

Javaコードも編集されました:

..。

0 投票する
3 に答える
35197 参照

java - JNI: unsigned int から jint への変換

unsigned int を jint に変換するにはどうすればよいですか? 変換する必要がありますか、それとも特別な処理をせずに返品できますか? これは基本的に現在の私のコードですが、ローカルで JNI をセットアップしていないため、テストできません。

0 投票する
2 に答える
1244 参照

c++ - size_t から unsigned int への変換

size_t から unsigned int に変換すると、オーバーフローが発生する可能性はありますか?

言語: C++

プラットフォーム: 任意

0 投票する
3 に答える
577 参照

c - N個の信頼できないビットを持つunsignedintの可能な値を計算する最速の方法は?

unsigned int A(32ビット)と別のunsigned int Bが与えられ、Bのバイナリ形式はAの10個の「最も信頼性の低い」ビットを示します。Aの1024個の潜在的な値すべてを拡張する最も速い方法は何ですか。私はCでこれを行うことを探しています。

たとえば、uint Bは、バイナリ形式(最も信頼性の低い10ビット)で常に101と220を持つことが保証されています。

たとえば、

それらのバイナリ表現は次のとおりです。

BはAの最も信頼性の低い10ビットを示します。したがって、Bで1に設定されている各ビットは、Aの信頼性の低いビットを示します。

Aの10ビットのいずれかを切り替えて作成された1024個の可能な値すべてを計算したいと思います。

0 投票する
9 に答える
147250 参照

c - unsignedintをsignedintCに変換します

65529からunsigned int署名済みに変換しようとしていintます。私はこのようなキャストをしてみました:

しかし、y-7を返す必要があるときにまだ65529を返しています。何故ですか?

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

php - 埋め込み C 関数を PHP 関数に変換する

Cで書かれた以下の関数をPHPで「翻訳」しようとしています。問題は、PHP で記述された関数によって返される結果が、C で記述された関数によって返される結果と異なることです。

この問題は、変数を符号なし 32 ビット整数として扱うことができない PHP の整数オーバーフローに起因すると思います。

すべての操作を0xFFFFFFFFで AND マスクしようとしましたが、成功しませんでした。他に有効なソリューションはありますか?

C 関数:

PHP 関数:

ありがとうございました。

解決:

私は解決策を見つけました: 次のコードは、符号なし 32 ビット整数でシフト演算と加算を行うことができる関数を使用しています。

回答ありがとうございます。

0 投票する
2 に答える
2409 参照

c++ - 符号なし整数と色

A がアルファ、B、G、R が青、緑、赤の 0xAABBGGRR の形式で unsigned int (0xFF998877 など) を使用して、何かの色を変更しようとしています。

しかし、私が渡している色をゆっくりと暗くしたり明るくしたりするには、どうすればよいのでしょうか。

この方法で unsigned int を使用した経験があまりないため、私の解決策は単純に値を 1 減らすことでしたが、これは奇妙な結果になりました。RGB要素のみを変更し、アルファを一定に保つ良い方法はありますか? 私はわずかな調査で、他の符号なし整数を掛け合わせて最終結果を生成できることを発見しました (例: (0xFF * 0x99 * 0x99 * 0x99))。

どんな助けでも大歓迎です!

0 投票する
6 に答える
20184 参照

c++ - sqlite3ステートメントで「unsignedlong」(uint64)をバインドしますか?C ++

sqlite.orgで入手できるsqlite3ライブラリを使用しています。

データベースに保存したい署名されていないlongがいくつかあります。自分でクエリを作成して、何らかの注入(偶発的かどうかに関係なく)を可能にしておきたくありません。したがって、私はsqlite_bind_*関数を使用してパラメーターを「サニタイズ」しています。

問題は、符号なし長整数の関数型がなく、整数だけであるということです。

int sqlite3_bind_int(sqlite3_stmt*, int, int);

int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);

署名なしで保存できない場合は、間違いなくオーバーフローする番号があります。

これを自分で管理する必要がありますか?(つまり、データベースから選択した後に符号なし型にキャストするか、データベースに挿入する前に符号付き型にキャストします)

これを自分で管理する必要がある場合、比較が実際には符号なしの範囲にあることを意図しているときに、符号付き長整数として格納されているいくつかの比較クエリをどのように実行しますか?

変換されるINTEGERデータ型を見ると、unsignedlongsは問題なく表現できると思います。

他に利用できる解決策がある場合は、私に教えてください!ありがとう!

0 投票する
4 に答える
2306 参照

c++ - C ++:符号なしタイプのみを使用する場合の符号付き/符号なしの不一致

警告レベル/W4を有効にしてVisualStudio2010 C ++コンパイラ(X86)を使用して次のC ++プログラムをコンパイルしようとすると、マークされた行に符号付き/符号なしの不一致の警告が表示されます。

私は符号なしの型しか使用していないので、これは私を混乱させます。比較以来

そのような警告は発生しません。おそらく、ここで発生する奇妙な暗黙の会話と関係があります。

したがって、この警告が表示される理由は何ですか?また、この会話はどのようなルールで発生しますか(これが理由である場合)?

0 投票する
3 に答える
1492 参照

c++ - 「unsigned long int」および「unsigned long long int」割り当ての問題

数週間前、私は初めて (私はそれらを使用するのに慣れていません) floatsdoublesを使用していましたが、比較オペランドにいくつかの問題があります。その型に値を割り当てようとしているときにも問題がありましたが、それも解決しました...

今日、私は C++ でライブラリを作成していて、エラーを見つけました... うーん... 変ですか? それとも私の愚かな考えですか?

これはコードです:

}

おそらくiniライブラリはすでに作成されており、私のものよりもはるかに優れています. しかし、私は C から C++ を学び始めており、何か面白くて便利なことで練習したいと思っています。クラス宣言を見逃していました。ここに貼り付ける必要があるかどうかはわかりませんが、次のとおりです。

いくつかの「テスト」の後、問題が「f_size」変数にあることが最終的にわかりました。なんで?わからない。しかし、標準出力に出力すると、非常に大きな数値が表示されます。これは、メモリ割り当て (malloc を使用) エラーと、それに続くファイルからの読み取り (または memset を使用した初期化) 時のエラーの問題です。

助けていただければ幸いです。そして、エラーを確認して学習を続けるためのリンク、参考文献、または説明。

ありがとう!

PS: Linux Debian の "squeeze"、amd64 で g++ を使用しています。