問題タブ [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.
c++ - 文字列が必要なときに unsigned char* を使用して何ができますか?
unsigned char* があるとします。それを some_data と呼びましょう。
some_data には url のようなデータが含まれています。例えば:
次のように「foo」の値を取得できる関数があります。
問題は、この関数に渡す文字列、または少なくとも char* (問題なく文字列に変換できる) が必要なことです。
キャストすることでこの問題を解決できます:
そして、それを関数 all okie-dokie に渡します
...
valgrind を使用して、これが微妙なメモリ リークにつながる可能性があることを発見するまで。
私が集めたものから、文字列の終わりを示すヌルを台無しにするキャストの再解釈に関係しています。したがって、C++ が文字列の長さを把握しようとすると、おかしなことになります。
some_data が unsigned char* で表されているという事実を変更できない場合、これらの微妙な問題を起こさずに、grabFooValue 関数を使用する方法はありますか?
この (場合によっては大きい) unsigned char* から foo の値を取り出すより良い方法が明らかにない限り、私は既に持っている値検索関数を保持したいと思います。
unsigned char* some_data は変化し、サイズが大きい場合もありますが、「foo」の値は早い段階でどこかにあると想定できるため、私の考えでは、最初の X 文字の char* を取得しようとしました。 unsigned char*. これにより、char* の終了位置を設定することで、文字列の長さの問題を解決できる可能性があります。
strncpy とキャスティングの組み合わせを使用してみましたが、これまでのところダイスはありません。何かご意見は?
c# - P / Invoke、c#:unsignedcharがバイトを失う
ソフトウェアのSDKのdllファイルに取り組んでおり、ソフトウェアのホストに関する情報を取得するために関数を呼び出そうとしています。
関数が必要とする構造体には2つのunsignedchar変数(HostMachineAddress、HostProgramVersion)があり、c#から呼び出そうとすると最後のバイトが「失われる」ようです...以下のc#構造体のSizeConstを次のように変更すると5欠落しているバイトを取得しますが、他の変数がデータを失う原因になります。
誰かがこの問題を解決する方法を見つけるのを手伝ってもらえますか?また、structの代わりにクラスを使用しようとすると、system.stackoverflowエラーが発生します
C#構造体
C#
c++ - unsigned char ポインタを初期化する方法
長さ 1500 のunsigned char * バッファーを初期化して、他のソースから値を格納できるようにしたいと考えています。
c++ - 文字列を unsigned char [] に変換します
現在、次のようにパケットをセットアップしています。
このパケットは暗号化のために文字列に変換され、復号化された文字列形式からパケットに戻す必要があります。を除くすべての変数に対してこれをうまく行うことができますunsigned char data[]
。次のことを試しましたが、成功しませんでした:
ここで、data は にコピーされるデータの文字列表現でありunsigned char []
、p はパケットです。
これにより、valgrind から次の結果が得られます。
ソースとして引用していますが、コメントアウトされstrcpy
た行だけでコンパイルおよび実行されます。memcpy
私も同じ結果で置き換えmemcpy
てみました。strcpy
何か案は?データが初期化されておらず、そこにメモリが割り当てられていない可能性があるためだと思いますが、これを処理すると思いmemcpy
ました。
c - unsignedchar回転
unsignedcharが何であるかについて少し混乱しています。署名された文字は、ビット形式の文字の表現ですよね?サンプルの問題では、このソリューションでは符号なし文字のビットであるnビット位置だけ右に回転しています。
誰かがcharの例とそれぞれのビットで説明できれば、それは大いにありがたいです。本当にありがとう。
c++ - 定義されたオブジェクトへの未定義の参照を表示しています
プロジェクトでいくつかの文字列をハッシュしようとしています。そして、HAMC SHA1アルゴリズムhttp://www.codeproject.com/KB/recipes/HMACSHA1class.aspxを使用する次のプロジェクトを使用してい ます
苦労の末、コード全体をコンパイルすることができました。しかし、最終的には、未定義の参照に関する最後の問題が残ります。
次のように、プロジェクトで指定された HMAC SHA1 クラスを呼び出す次のコードを作成しました。
次の HMAC_SHA1.cpp の次の行でエラーが発生しました。
ここでエラーが発生します:
今SHA1.hで
私は次のコードを見ることができます
/////////////////////////////////////////////// /////////////////////////// // 8ビットと32ビットの変数を定義する
/////////////////////////////////// 関数宣言は次のとおりです。
私はWindows環境を使用していますが、cygwinでコンパイルしています。
なぜこのようなエラーが発生するのかわかりません
エラー: 「CSHA1::Update(unsigned char*, unsigned long)」への未定義の参照
何が問題なのか、どのように修正できるのか、誰でも指摘できますか?
_MSC_VER の何かが間違っていると思います。これは false である必要があり、UINT_8 は unsigned char で定義する必要があります。助けてください。
c - 普通の char は通常/常に非 2 の補数システムで符号なしですか?
明らかに、標準はこれについて何も述べていませんが、私は実用的/歴史的な観点からもっと興味がありchar
ます. そうしないと、null ターミネータの 2 つの表現や、すべての「バイト」値を表現できないなど、あらゆる種類の奇妙さが潜在的に発生しますchar
。この奇妙なシステムは本当に存在しますか?
c++ - C++ での unsigned char の ostream 演算子のオーバーロード
与えられた:
<<
とで使用できるostream 演算子を追加したいと思いAString
ますBString
。
に対して同じことをするBString
と、コンパイラは について不平を言いinvalid conversion from 'const unsigned char*' to 'const char*'
ます。には引数ostream.write
がありません。const unsigned char*
それ<<
自体が を受け入れるように見えるconst unsigned char
ので、このようなことを試します
これが正しい/良い習慣なのか、それとももっと良い方法があるのか 誰か教えてもらえますか? コメントを歓迎します!
c++ - C++ iostream >> 演算子の動作は get() unsigned char とは異なります
圧縮を行うためのコードに取り組んでいて、ビットストリーム クラスを作成しました。
私のビットストリーム クラスは、読み取り中の現在のビットと現在のバイト (unsigned char) を追跡しました。
istream クラスで >> 演算子と get() メソッドを使用した場合、ファイルから次の符号なし文字を読み取る方法が異なることに気付きました。
なぜ異なる結果が得られたのか不思議でした。
元:
対。
追加情報:
具体的には、私が読んでいたバイトは0x0Aでしたが、>>を使用すると0x6Fとして読み取られます
それらがどのように関連しているのかさえわかりませんか?(それらは互いに 2 の補数ではありませんか?)
ただし、 >> 演算子は unsigned char でも機能するように定義されています ( c++ istream クラス リファレンスを参照してください)。
c++ - Python リストを unsigned char* にラップする
編集:こんにちは!
現在、Python から C++ 関数にアクセスしようとしていますが、Python リストを引数として関数に渡そうとすると問題が発生します。
アクセスしようとしているC++関数定義は次のとおりです(PC / SCリーダーにコマンドを送信するために使用されます):
私の目標は、以下の例のように python から次のようにこの関数を呼び出すことです。目標は、リスト [1,2,3] を unsigned char * buffer に変換することです。
SWIG ドキュメントhttp://www.swig.org/Doc2.0/Python.html#Python_nn57の例「33.9.1 Converting Python list to a char **」から着想を得て、次のタイプマップを定義して処理しunsigned char *
ましたが、残念ながらそのようですタイプマップは使用されません。実際には、最後の引数を無視するか、Noneに設定してのみ関数を使用できます。
Python コード:
次に、コマンドのデータのリストを入力しようとすると (前の例の None を置き換えます)、次のエラーが表示されます。
「引数の型が間違っている」の場合だと思いますので、型マップが使われていないのではないでしょうか?したがって、主な質問は、リストを渡し、それが関数によって受け入れられることを確認する方法です (したがって、typemap によってキャッチされます)。
そのための有効な解決策が見つからなかったため、何かを見逃したと思います。比較的頻繁に使用する必要があります。
SWIG .i ファイルの typemap コードのコードは次のとおりです。
Resume で、C++ 関数を呼び出すために SWIG タイプマップを実行する方法:
pythonからのように:
どんな助けでも大歓迎です よろしくお願いします
ps 私の英語が下手でしたら申し訳ありません。それは私の母国語ではありません。