問題タブ [ushort]
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# - ネットワーク経由で ushort[] をマーシャリングする
2 つの簡単なコンソール プログラムと簡単な構造を作成しました。
M11 オブジェクトは、ネットワーク経由で送信するテスト オブジェクトです。
SimpleSender はオブジェクトをマーシャリングし、ネットワーク経由で送信します。
最後になりましたが、バイトを受信してオブジェクトに変換するレシーバーです。
問題は、受信プログラムが Marshal.PtrToStructure を呼び出したときに、常に "System.AccessViolationException: 保護されたメモリの読み取りまたは書き込みを試みました" をスローすることです。
注意事項: 1. MessageHeader のみで正常に動作します。2. ushort 配列のサイズは動的です。
前もって感謝します。
アンリ
java - C# コードの Java への移行、unsigned short および byte 配列の変換
私は以前に C# で書いたコードを Java で書いています (私は Java にはかなり慣れていません)。C# のコードと例を次に示します。
デフォルトでリトル エンディアンに設定されているため、.NET でカスタム ビット コンバーターを使用しています。とにかく、Java について私が理解していることから、byte[] と同じ結果を使用したい場合、値 (170 と 187) が 128 (Byte.MAX_VALUE + 1)、つまり (42, 59) だけ小さくなると予想する必要があります。 - .net と Java ではバイト型の範囲が異なるため。上記のロジックを模倣するためにJavaで書いたものを次に示します。
ただし、上記のコードを呼び出すと
結果は [42, 59] ではなく [42, -69] です。最後のバイトは、本来よりも 128 小さくなっています。これを適切に行う方法と、私のロジックが正しいかどうかについて、いくつかの指針が本当に必要です。uint や ulong などについても同様に行う必要があるため、これを正しく理解する必要があります。
c# - 2 つの ushort 値を xor しても ushort が返されないのはなぜですか?
この C# コードでコンパイル エラーが発生するのはなぜですか?
エラー CS0266: 型 'int' を 'ushort' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)
c++ - SSEまたはSSE3を使用してushort配列にuchar値を追加します
unsigned short dst[16][16]行列とより大きなunsignedcharsrc[m][n]行列があります。
次に、srcマトリックスにアクセスし、 SSE2またはSSE3を使用して16x16サブマトリックスをdstに追加する必要があります。
以前の実装では、合計値が256を超えることはないと確信していたため、次のことができました。
ここで、Wは目的の行に到達するためのオフセットです。このコードは機能しますが、srcの値が大きくなり、合計が256を超える可能性があるため、ushortとして保存する必要があります。
次のことを試しましたが、うまくいきません。
どうすればこの問題を解決できますか?
編集
ポールありがとう、でもあなたのオフセットは間違っていると思います。私はあなたの解決策を試しましたが、部分行列の行が間違ったdstの行に追加されているようです。私は正しい解決策がこれであることを願っています:
c# - 'int' を 'ushort' として扱うことができるのに、拡張メソッドでパラメータとして渡された場合は扱えないのはなぜですか? また、それに対するエレガントな解決策は何ですか?
私はこの拡張メソッドを持っています:
ここで、上記のメソッドを に使用する必要がありますushort
。やってみると
最初の行は井戸にキャスト3
しushort
ます。しかし3
、パラメータとして渡されると、エラーが発生します
'ushort' には 'In' の定義が含まれておらず、最適な拡張メソッド オーバーロード 'Extensions.In(T, params T[])' に無効な引数が含まれています。
しかし、これは機能します:
これは奇妙です。
2 番目の例では機能するのに、最初の例では機能しないのはなぜですか?
ここで私を助ける良い代替手段は何ですか? のリテラルがないため、
/li>short
またはushort
次のように各整数を手動でキャストするよりも簡単な代替手段を見つけることができません。
c# - byte[]からushort[]
これが私の質問です。少し説明してください。
tiff画像をバッファに読み込んでいます。私のtiffの各ピクセルは、ushort(16ビットデータ、非負)で表されます。
私の画像サイズは64*64 = 4096です。tiffがバッファにロードされると、バッファの長さは8192(4096の2倍)になります。これは、私のバッファーでは、コンピューターが2バイトを使用して1つのピクセル値を格納しているためだと思います。
特定のピクセルの値を取得したいのですが、この場合、2バイトごとに1つのushortに結合する必要がありますか?
例:00000000 11111111-> 0000000011111111?
これが私のコードです:
byte []バッファーを読み取って、16ビットのushortピクセル値を確実に取得できるようにするにはどうすればよいですか?
ありがとう
c# - C# で ushort 値を 2 バイト値に変換する
C#でushortを2バイト変数に分割するにはどうすればよいですか?
私は以下を試しました(package.FrameIDはushortです):
これを紙と鉛筆で計算しようとすると、正しい結果が得られます。また、FrameID が 1 バイトより大きい場合 (つまり、2 番目のバイトがゼロでない場合) は機能します。
私の場合、package.FrameID は 56 で、array[0] の結果は 56 ではなく 16 です。
どうすればこれを修正できますか?
c# - C#でushort配列を別のushort配列からすばやく減算する方法は?
ushort arrayA の各値を、同じ長さの ushort arrayB の対応するインデックス値からすばやく減算する必要があります。
さらに、差が負の場合は、負の差ではなくゼロを格納する必要があります。
(同じサイズの別の画像から 640x512 の画像を差し引いているため、正確には長さ = 327680 です)。
以下のコードは現在 20 ミリ秒ほどかかっていますが、できれば 5 ミリ秒以下に抑えたいと考えています。安全でないコードは問題ありませんが、私は安全でないコードを書くのが得意ではないので、例を挙げてください。
ありがとうございました!
更新:厳密には C# ではありませんが、これを読んでいる他の人の利益のために、最終的に次のコードを使用してソリューションに C++ CLR クラス ライブラリを追加することになりました。約 3.1ms で実行されます。アンマネージ C++ ライブラリが使用されている場合、約 2.2 ミリ秒で実行されます。時差が小さかったので、管理されたライブラリを使用することにしました。
次に、次のように呼び出します。
c# - リストを宣言して初期化するためのより短い方法
現在、次のようなリストを宣言して初期化しています。
最終的にはushort
、10 をはるかに超える値を含むリストが増えることになります。たとえば、1 から 100 までのすべての数値を入力するのは効率的ではありません。リストは常に数値の範囲になります。
これを短く書く方法はありますか?を調査してみEnumerable.Range
ましたが、それは値のみを処理しint
、「タイプ int を ushort に暗黙的に変換できません」というエラーが表示されます。
c# - short[] を ushort[] に変換します
C# で short[] を ushort[] に変換する必要があります
ありがとう