問題タブ [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 に答える
590 参照

c++ - ポインターの reinterpret_cast char と unsigned char の間の落とし穴?

UUID を作成し、事前に割り当てられたバッファーに人間が読める形式で書き込むために、次の関数を使用しています。何かがおかしい。

メソッドの最後に、デバッガーは次のように言います。

  • lDest = 0x01fe4fd8 "df4a5ed8-c0d2-495a-84d7-ce0e07cf2113"
  • pdst = 0x0012ec7c ""ìetoodhealthouseledefhe「

どちらも同じ内容かと思っていましたが、そうではありません。

どうしたの?ありがとう。

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

c++ - unsignedcharとcharポインタの違い

( WinAPIにunsigned charもあります)とポインタの違いに少し混乱しています。BYTEchar

現在、いくつかのATLベースのレガシーコードを使用していますが、次のような式がたくさんあります。

さて、の実装はArrayToXXString次のようになります。


だから、質問:

  • CスタイルのキャストfromBYTE*からLPCSTRconst char*)は、考えられるすべてのケースで安全ですか?

  • 配列データをワイド文字列に変換するときに、二重のヌル終了を追加する必要が本当にありますか?

  • 変換ルーチンCStringW((LPCWSTR)copiedArray.GetData())は私には無効に思えますが、それは本当ですか?

  • このすべてのコードを理解し、維持しやすくする方法はありますか?

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

c++ - osx lionで127に制限されたunsignedchar?

私は奇妙な問題に直面していて、私のmac osx lionで作業しています(xcode4 / clangの下で、gcc4.2で再現可能ですが)。

unsignedchar変数に127を超える値を割り当てることはできないようです。だから、私が割り当てるとき

または、単に

私のプログラムは出力を生成しません。

このコードを実行すると

次の出力が得られます。

符号なし文字の範囲は最大255です

ただし、このようなものを実行すると、プログラムは毎回異なる任意の値(c = 114、c = 252など)までの出力を生成します。for(unsigned char c = 0; c <CHAR_MAX; c ++)std :: cout << "c =" << 2 * c << std :: endl;

CHAR_MAXをUCHAR_MAXに変更すると、プログラムは再び出力なしで終了します:(

前もって感謝します

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

c++ - 配列が unsigned char として宣言されている場合のガベージ値

配列が unsigned char として宣言され、範囲 0x00-0xff の値で初期化され、cout を使用して出力されると、次のようにガベージ値が取得されます。

数字にシングルバイトを使用する方法を知っていても、 cout を使用できるでしょうか?

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

c++ - std::vectorを便利にコピーします入力ストリーム(std :: istream)オブジェクトへ

サードパーティのlibに含まれ、バイナリファイルデータが転送される入力ストリームオブジェクトを期待する関数を利用しようとしています。

署名は次のようになります。

このサードパーティのlib/functionを変更/変更できないため、「my」コードに適合させる必要があります。呼び出し場所には、istreamオブジェクトで渡されることが期待されるデータを含むstd::vectorがあります。現在、ベクトルを反復処理し、<<演算子を使用してバイトごとにコピーすることにより、ベクトルをストリームにコピーしています。

もっと効果的で便利な方法があるのではないかと強く思いますが、今のところ有用なものは見つかりませんでした。どんな助け/あなたの考えも大歓迎です。

最高、JR

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

c++ - C/C++ での C スタイルの unsigned char の解析と操作 - セグメンテーション違反

これを行うために C++ コンパイラ (したがって、calloc関数呼び出しのキャスト) を使用していますが、コードは基本的に C です。

基本的に、私はとして知られtypedefている を持っています。これを使用して、バイナリからファイルを解析するための文字列バッファーを作成しています (正確には TGA ファイルですが、それは関係ありません)。unsigned charviByte

私は今、そのための基本的な関数を書いています。append、prepend、new など。

問題は、 の最初のループの最初の繰り返しでviByteBuf_Prepend、セグメンテーション違反が発生することです。理由を正確に知る必要があります。これは、いくつかのヒントがなくても一晩中眠れなくなる可能性があるためです (しゃれが意図されています)。

また、バッファが文字列をどのように保留しているかという点で、私のアルゴリズムが正しいかどうかも知りたいです。viByteたとえば、使いmemsetすぎるのは悪い考えかもしれないし、unsigned char の printf 形式が正しいかどうか (コンソールに何も出力されていないため、そうではないと感じています)。

GCC、Linux でのコンパイル。

Zeコード

たくさんありがとう。

アップデート

申し訳ありませんが、セグメンテーション違反があるコードを明示的に投稿する必要がありました。それはここにあります:

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

c++ - 非標準の2進表現を使用して数値の算術演算を行うにはどうすればよいですか?

unsigned charを使用すると、 0から255までの数値を格納できます。

255(b10)= 11111111(b2)<=1バイトです

これにより、+、-、*...などの操作を簡単に実行できるようになります。

では、どうでしょうか。

255(b10)= 10101101(b2)

この方法に従うと、 unsigned charを使用して最大399を表すことが可能になりますか?

399(b10)= 11111111(b2)

誰かが最後の方法を使用して加算を実行するアルゴリズムを提案できますか?

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

audio - 加工された音声データ(unsigned char)は再生できません

操作後のオーディオ データの再生に問題があります。私が使用する唯一の API は、Linux (Ubuntu) 上の C 言語の alsa lib API です。read() を使用して unsigned char 配列 (buffer1 と呼ばれる) の 16 ビット整数 wave ファイルからデータを取得し、buffer1 を適切に再生できます。同じサイズの別の unsigned char 配列 (buffer2 と呼ばれる) にデータを渡す必要があります。buffer2[i] = buffer1[i] でループを作成すると、動作します: buffer2 は適切に再生できます。しかし、データを操作するために、それを float 配列に変換してから unsigned char に戻します (今まではオーディオ データを操作していません。float に変換してから unsigned char に戻して、その動作をテストします)。しかし、現在、buffer2 の値はすべて buffer1 の値と厳密に同じですが、buffer2 は音を立てません (buffer1 と buffer2 の多くの値の printf を作成しました。

何が問題なのですか?

ビクター

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

c++ - C++ char 配列の unsigned char 配列へのコピー

ファイルを読み取り、その情報を unsigned char 配列に保存しようとしています。ただし、私のプログラムは変数を上書きしているようです。

ClassA ヘッダー:

ClassA ファイル:

ClassB ヘッダー:

ClassB ファイル:

デバッガーで位置変数を見ると、LoadMemoryBlock の呼び出し後、以前のように 16400 が表示されなくなり、毎回異なる乱数が表示されることがわかります。また、ファイル ifstream も LoadMemoryBlock 呼び出しによって破損しています。だから私は memcpy がそれらを上書きしていると推測しています。

アレイを別の方法で初期化しようとしましたが、memcpy がクラッシュしました!

ClassA ヘッダー:

ClassA ファイル:

ClassB ヘッダー:

ClassB ファイル:

これらの方法のうち、両方ではないにしても、少なくとも 1 つが機能すると考えました。私は何を間違っていますか?

編集: 上記の ClassA 初期化を含めました。

これは、StoreFile メソッドを呼び出す方法です。

0 投票する
5 に答える
14752 参照

c++ - C++ でランダムな unsigned char 値を生成する

ランダムな unsigned char 値を生成する方法を考えていました。私の考え;
rand()%255;unsigned chars は 0 ~ 255 をサポートするためです。この方法を改善できるかどうか疑問に思っていました(または、これを行うための最も正当な方法ですか)