問題タブ [unsigned-char]

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

c++ - ソケットからCのunsignedcharベクトルにバイトデータを書き込む方法は?

クライアントからjpegフレームを受信して​​いるbsdソケットを使用してCでサーバーを開発しています。

フレームデータは、jpeg形式のバイトデータのストリームとしてサーバーに到着します。

Cでは同等のバイトはunsignedcharであるため、sock.recv()関数を数回繰り返して、このデータをunsignedcharベクトルに受け取ります。

問題は、このデータを.jpgファイルに書き込むと、ファイルサイズが4バイトのみとして表示されることです。

また、フレームのすべての反復でrecvバッファーから選択されたバイト数が、送信されたフレームの合計サイズに等しいことを確認しましたが、どういうわけか、使用したベクトルに正しく書き込まれていません。

誰かがそれについて行く方法を知っていますか?ありがとうございました !

これが私がソケットからデータを読み取るコードです:

はい、PYTHONでダンミーサーバーを作成し、そこでフレームを正常に再構築したので、サーバーでデータを正しく受信しています。これが私がPythonで行うことです:

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

objective-c - unsigned char 割り当てと無料発行

私は 1 つの奇妙なことについて混乱しています....私は unsigned char 配列を持っています.... calloc を使用してそれを割り当て、その中にいくつかのバイトデータを記録します...しかし、この unsigned char を解放して再度割り当てると、前回割り当てられたメモリ内の同じアドレスが予約されていることがわかります。理由はわかります....しかし、2回目に書き込もうとしているデータが書き込まれない理由がわかりません...最初に書き込まれたデータが書き込まれています....誰か私にこれを説明してもらえますか? ??????

unsigned char *rawData = (unsigned char*) calloc(height * width * 4, sizeof(unsigned char));

これが私がそれを割り当てる方法です....実際に私の問題は、この割り当てのために2秒ごとに1回発生するため、メモリリークが発生することです...しかし、割り当てられたメモリセクターを解放しようとすると、上記のことが起こります... .:(

誰かが私を助けることができれば....私はとてもうれしいです...ここにコードがあります...

このコードには free(rawData) する部分がありません。このメソッド内で解放できないため、rawData をグローバルに定義し、このメソッドを呼び出した後に解放しようとしましたが、何も興味深いことはありません....

誰かが私を助けることができれば....私はとてもうれしいです...

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

c++ - unsignedcharのstrlenを取得する正しい方法は何ですか*

以下の私のコードは、私が期待するunsignedcharポインターに異なる長さを与えました。pphとpphCharに対して12(または13)または0(または1)を取得する必要があると思いました。私の問題は何ですか?実行を繰り返すと、毎回長さとoneLengthで異なる結果が得られました。

pphの長さを取得するにはどうすればよいですか?

長さを決定するために、最後に「\ n」を付ける必要がありますか?

私はVS2010、XP、C++を使用しています。

出力

割り当てられたmem13

文字1のサイズ

len32-毎回異なる

oneLength32-毎回異なる

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

c++ - バイナリデータを読み込んでunsignedcharにキャストする方法(C ++)

バイナリデータ(エンコードなし)で保存された生の画像ファイルがあります。ファイルを読み込んで、値をunsignedcharにキャストしたいと思います。しかし、これをどのように始めればよいのかわかりません。各ファイルには640x480バイトが含まれています。各ピクセルは8ビットです。

ここでC++ヘルプページを使用しました:http : //www.cplusplus.com/doc/tutorial/files/しかし、データを計算しているとき、同じバイナリ/人間が読めない文字を表示しているようです。誰かアドバイスしてもらえますか?これまでの私のコードは次のとおりです。

出力のサンプルキャプチャを次に示します。

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

c++ - SHA1 から返された unsigned char* を文字列に変換する

このリンクを使用して、C++ を使用して任意のデータの SHA1 ハッシュを作成しました。ただし、SHA1 呼び出しからの出力バッファーは unsigned char* です。16 進数値、つまりメッセージ ダイジェスト値を保存して、他の操作に使用できるようにしたいと考えています。

これらは unsigned char* であるため、文字列に変換してから 16 進数変換を実行しても意味がありません。したがって、16 進変換を行ってから、値を文字列または char* として保存する必要があります。これどうやってするの?

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

c - unsigned char の出力が機能する場合と機能しない場合があるのはなぜですか? Cで

学校のプロジェクトのために、フグの暗号化 (復号化ではなく暗号化のみ) を作成しています。暗号化自体は完了したので、楽しみのために復号化を行うことにしました (Blowfish では簡単です)。

バイトを表すために unsigned char を使用しました (ただし、uint8_t の方が移植性が高いと思います)。復号化されたバイトを印刷しようとしているときに、私が持っている質問が出てきます。プレーン テキスト メッセージを暗号化しています。暗号化した実際のテキスト メッセージを印刷することができましたが、非常に特定の場所でしか印刷できませんでした。同じ正確なコードは、他の場所では機能しないようです。ここにあります:

しかし、2 行後にまったく同じコードを使用しようとすると、機能しません

文字を数値形式でも出力してみましたが、実際に変わっていることがわかります。

ここで何が起こっているのですか?これは未定義の動作ですか?誰にも信頼できる解決策はありますか?2 つの呼び出しの間にメッセージ配列の値を変更することは何もしていません。

これを、sparc プロセッサを搭載した Sun 5.10 で実行およびコンパイルしています。

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

java - unsigned char* を Java に戻すための swig typemap の定義方法

暗号化機能を実行するために ac ライブラリを呼び出す Java アプリケーションがあります。これは、一部の Java プログラムから使用する必要がある c で実装されたカスタム ライブラリです。Java から bytearray を渡す関数を呼び出し、それを C 関数で符号なし文字ポインタとして扱うことができる SWIG タイプマップを定義する方法が必要です。ここで、c 関数はデータを入力して Java に返します。

私の現在の不幸なインターフェースファイルの抜粋は次のとおりです


私の不幸なJavaコードからの抜粋は次のとおりです。以下のコードでは、enCrypt 関数の呼び出しによってバッファが提供されると予想していましたが、生成されたコードに従って「ショート」が提供されます。(コード内のコメントを参照)


インターフェイス定義を次のように変更して、3 番目のパラメーターを jbytearray にする必要があると思います。次に、C プログラムの符号なし文字ポインターが指す内容を Java バイト配列にコピーするタイプマップを実装する必要があります。

コンテンツの長さを 256 バイトに指定する必要がある場合は、まったく問題ありません。任意の長さを処理するのは難しい場合があるからです。

誰かがそのようなタイプマップを見つけることができる場所を教えてもらえますか (私は SWIG が初めてで、タイプマップを書いた経験がありません)

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

c - この奇妙な関数は文字列をバイナリに変換していますか?

私はシステムの古いcコードでバグ修正を行っています(奇妙なことに、それは標準のcではありません。gccによってコンパイルされていません)。文字列をunsignedchar形式のバイナリコードに変換しているように見えるこのコードにたどり着きました。ロジックパズル私(太字部分)。これはあなたたちにとって意味がありますか?

これをコピーして、長さが13ではなく11の別の文字列で再利用する必要があるため、このコードを理解する必要があります。

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

c - unsigned char to char * and int in C?

関数でunsignedcharを必要とする暗号化に取り組んでいますが、復号化後に使用するためにcharに変換したいと考えています。ので、私は持っています:

この時点で、平文が実際には「0123456789」のデータ文字列であるとしましょう。どうすれば平文の値を「012456789」としてplaincharに取得し、同時に123456789としてplainintを取得できますか?

- 編集 -

平文が「AAAAAAAAAA105450」と等しい場合にこれを行う:

plaincharを"AAAAAAAAAA105450╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ codeはrijndaelのサンプルコードであるため、正常に機能しているはずです。

ありがとう、ベン

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

c++ - AND および比較時の符号変換

次のコードがあります。

ほとんどすべてをキャストしようとしましたが、単純な AND がこの警告を引き起こしている理由を理解できないようです。どちらの変数も符号なしです。何か案は?