問題タブ [uint8t]
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++ - タイプの使用可能なスペースよりも多くを占めるように割り当てられた値はどうなりますか?
例えば
デバッグ出力:
ある種の切り捨てを行うと読んだことがありますか?正確な方法はわかりませんが、リンクをいただければ幸いです。
c++ - C は方程式内でオーバーフローしますか?
a + b
予想どおり 255 が 4 にオーバーフローし、予想どおりc / 2
2 が返されます。しかし、同じ 2 つのステップを評価するときに最後の例がオーバーフローしないのはなぜでしょうか?
内部計算値はより多くのビットで保存され、割り当てを行うときに8ビットに切り捨てられるだけだと思います。その場合、限界はどこにあるのでしょうか。
4、2、130
c - バイトを扱う Windows API 呼び出し (「recv」など) が、デフォルトで署名されている char* を使用するのはなぜですか?
私はc / c ++にかなり慣れていないので、可能であればstdint.hで定義された型(uint8_t
の代わりになどunsigned char
)を使用することを提案するいくつかのガイドラインに従おうとしています。
char*
ただし、バッファを必要とする API ( など)を呼び出す場合は、recv
その API が指示する型を使用する必要があるようです。
私が理解できないのは、バイトを読んでいる場合、それを符号なしにしたくないので、-128 と 127 の代わりに 0 と 255 の間の値を取得する理由です。
これが実装固有のものかどうかはわかりませんが、char
署名付きのデフォルトしか見たことがありません。
このような呼び出しの結果を にキャストする必要がありますか、unsigned char*
それともuint8_t*
より高い正の値を解釈できるようにする必要がありますか?
python - Python 拡張機能で uint8_t を処理するには?
C モジュールの関数の引数として uint8_t の配列を渡したいと思います。
この配列を直接解析する方法が見つからなかったので、それを PyObject_t に解析してから、PyTuple_t オブジェクトとして反復しています。このように、このタプルの各要素 PyObject_t を uint8_t にキャストする必要があります。
PyInt_FromUINT8_t 関数などがない場合、どうすればそれを行うことができますか?
c++ - uint8_t* から uint8_t fpermissive c++ への無効な変換
この問題が何度も尋ねられていることは承知していますが、同様の質問を何度も読んだ後でも、この問題を理解して解決することはできません。私は初心者のコーダーであり、まだ学んでいます。何日もの間、この問題を解決できませんでした。
私は arduino のデモ コード ライブラリを使用しており、それを c++ Atmel Studio 7 でコンパイルしようとしています (ATSAMD21 に基づいて作成したカスタム ボード用にコンパイルしています)。これが私の関連コードです(関連のない部分をすべて削除しました):
上記のコードは、行 195 列 54 の i2cWrite 関数でエラーを返します。
「uint8_t* {aka unsigned char*}」から「uint8_t {aka unsigned char}」への無効な変換 -fpermissive
上記のコードを最初に変更し、43、46、55、83行目のi2cWrite/i2cRead配列に*アスタリスクを追加したことに注意してください。これらを追加しないと、それらすべての行でも同じ正確なエラーが発生します。元のコードにはこれらの * 参照がなかったので、おそらくこれらのポインターを追加することは想定されていませんでした...?
ポインターと参照について学習しようとしていますが、苦労しています。私の人生では、このエラーを解決する方法がわかりません。私はさまざまな & と * を試しましたが、私の人生では、この問題を理解して修正することはできません。私のコードがuint8_t *をuint8_tに割り当てようとしている方法/場所を理解できないようです。
他のトピックでは、これらの変数のいずれかに volatile または const をキャストまたは使用する必要がありますか? 私はそうは思いませんが、私は初心者です。
誰かが私を正しい方向に向けたり、解決策を理解するのを手伝ってくれたりすることにとても感謝しています. Arduino では、このコードをコンパイルして実行できますが、Atmel Studio では実行できません。どんな助けでも大歓迎です。
編集: エラーと行番号が私の投稿と一致するように、コードを更新してコメントを削除しました。#s 行の混乱をお詫びします。
c - cのchar配列にuint8_t配列をコピーする方法
uint8_t 配列を char 配列にコピーします。キャスト、memcopy、strcpy ...でさまざまなソリューションを試しましたが、機能しません!!! 私の小さな例は次のとおりです。
プリントは次のとおりです。
なぜ x の数が異なるのですか?
c - uint8_t を char* に連結する
私はCに本当に慣れていないので、さまざまなuint8_tからchar *を作成するのに少し複雑です
私の考えは、各場所に数値を行列から配置する char* を作成することです
たとえば、次のマトリックスがあるとします。
id like a char* thats"01234567890123456"
私が何をしているのか、それが機能していないのは次のとおりです。
もちろん、うまくいきませんが、どうすればよいか分からず、この問題に関する詳細情報を見つけることができません。
どんな助けでもいいでしょう、
ありがとう
c++ - uint8_t をバイナリ表現に変換する
uint8_t
シリアル化してファイルに書き込みたいタイプの変数があります(少なくともWindowsでは、これは私が目指しているものであり、移植性が高いはずです)。
バイナリ形式でファイルに書き込もうとすると、次の作業スニペットに出くわしました。
まず、このスニペットが何をするのかを理解していることを確認させてください - それは私の var (基本的に unsigned char で、長さは 1 バイトです) を受け取り、それをunsigned int
(4 バイトの長さで、あまり移植性がありません) に変換し、 & 0xFF
"最下位バイトのみを抽出します。
今、私が理解していないことが2つあります:
- なぜそれを最初に変換する
unsigned int
のですか、なぜ単に or のようなことをできないのです
file.write((wchar_t*)&m_num, 1);
かreinterpret_cast<wchar_t *>(&m_num)
? (参照) - より長いタイプ、たとえば a
uint64_t
(8 バイトの長さ) をシリアル化するにはどうすればよいですか?unsigned int
ここで十分かもしれませんし、十分でないかもしれません。