問題タブ [bitconverter]
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# - Byte[]からASCIIへ
バイナリ値で返されたテキストファイルの内容を受け取りました。
これをASCIIに変換するにはどうすればよいですか?
c# - 符号付き整数からソート順のバイト配列を取得する最速の方法
bitconverter.GetBytes を使用して整数からバイトを取得できることはわかっています。ただし、内容を並べ替え順序で比較できる配列が必要です。
例えば
ここまでは順調ですね:
しかし:
ここで奇妙なことは何もありません。しかし、minusOne バイト配列を plusOne bytearray と比較すると、minusOne バイト配列が plusOne よりも大きい (255 > 0) ことがわかります。
Int.Min が 0,0,0,0 を与え、int.Max が 255,255,255,255 を与えるように、シフト、xor などの派手な方法はありますか??
混乱させて申し訳ありません :)
c# - C#BitConverterの問題
通常、たとえばバイト配列で5を表現したい場合は、{0x00,0x00,0x00,0x05}のようにsmthになりますが、BitConverterは逆配列({0x05,0x00,0x00,0x00})を提供します。 m間違っていますか?
vb.net - MP3フレームヘッダーの読み取り-変数へのビット値の割り当て
Visual Basic .netを学習していて、Javaソースコードをvb.netプロジェクトに変換しようとしています。プロジェクトはmp3の詳細を読み取り、フレームヘッダーの詳細などに従ってファイルを正確に分割します。
私の質問は、mp3ファイルのフレームヘッダーの読み取りに関するものです。フレームの詳細はフレームの最初の4(32ビット)バイトに含まれ、特定のビットはここで詳しく説明されているように特定の値を表すことを理解しています:http ://www.mp3-tech.org/programmer/frame_header.html
FileStreamを使用して、このデータを読み取り、テキストボックス内にバイナリで表示することができました。
ビットを読み取り、クラス内の変数に割り当てるためのヘルプを探しています。長さが1、2、または4ビットの値として、これを行うための正しい手順がわかりません。たとえば、ビット19〜20 = MpegType、ビット12〜15 = BitrateIndex、ビット9=パディングなどです。
codeproject.comで入手できる同様のプロジェクトを見てきましたが、それらが上記をどのように達成したのかわかりません。
どんな助けでも大歓迎です。
編集:
これがこれまでのメインサブです。変数やプロパティなどを宣言するコードは含まれていません。
これを実行すると、リッチテキストボックスの出力は次のようになります。
これらのビットを読み、変数に適切な値を割り当てたいと思います。
同期値の最初の12ビットを読み取ります。mpegID値のビット13を読み取ります。layerID値などのビット14と15を読み取ります。
それがより明確になることを願っています。
Javaコードは次のとおりです。
c# - Compact Framework の BitConverter.GetBytes() に関する興味深い観察
BitConverter.GetBytes(...) メソッドを使用して float 値をバイト配列に変換しようとしています。1 つの興味深い問題に出くわしました。次のコードを検討してください -
上記の変換は、コンソールに出力している 4 バイトの配列を返します。ただし、4 バイトの出力が {0 0 0 0} ではなく {0 0 0 128} になる場合があることに気付きました。
何か助けはありますか?
ありがとう、オムキー
hash - BitConverter.ToInt64は、32バイトのバイトアリー(SHA256Managedからの256ビットハッシュ)をどのように処理しますか
SHA256Managedを使用して256ビットのハッシュを生成しており、SQLサーバーに保存したいと思います。このためのBitConverter.ToInt64はどれくらい良いですか?余分なバイトを無視しますか?int64に変換する前に、バイト配列を減らすための処理を行う必要がありますか?
c# - バイナリへの変換と C# への変換の改善
私が取り組んでいるゲーム用の汎用ソケット サーバーを作成しようとしています。SmartFox や Photon などの既に構築されたサーバーを十分に使用できることはわかっていますが、学習目的で自分でサーバーを作成するという苦労はしたくありません。
基本的なデータ型、その配列、および特別な GSObject をバイナリに変換し、それらをクライアント エンドでオブジェクト形式に戻すことができるように配置する、BSON にインスパイアされたプロトコルを考え出しました。コアでは、変換メソッドは .Net BitConverter クラスを利用して、基本的なデータ型をバイナリに変換します。とにかく、問題はパフォーマンスです。50,000 回ループし、約 5500 ミリ秒かかるたびに GSObject をバイナリに変換するとします (結果の byte[] は変換ごとにわずか 192 バイトです)。これは、1000 人の同時ユーザーで毎秒 5 ~ 10 の位置更新を送信する MMO には遅すぎると思います。はい、1 つのゲームで同時に 1000 人のユーザーが参加する可能性は低いことは承知していますが、前述したように、これは私にとって学習プロセスであるはずです。
そうです、誰かが他の変換テクニックを知っていたり、私がどこでパフォーマンスを落としているかを見たりしたら、助けていただければ幸いです。
GSBitConverter.cs
これはメインの変換クラスです。メインのデータ型に拡張メソッドを追加して、バイナリ形式に変換します。BitConverter クラスを使用して基本型を変換します。整数と整数配列を変換するコードのみを示しましたが、残りのメソッドはこれら 2 つのほとんどのレプリカであり、型をオーバーロードしているだけです。
Program.cs ループでバイナリに変換するオブジェクトは次のとおりです。
上記のコードで使用されている他のいくつかのクラスのコードを次に示します。そのほとんどは繰り返しです。
c# - ビッグエンディアン配列をInt64に変換する
System.IO.BinaryReaderを使用して、シリアル化されたファイルからデータを読み取ります。ファイルはビッグエンディアンです。したがって、ストリームからInt64(long)を読み取るために行ったことは、ストリームから8バイト読み取られました。私がする必要があるのは、これらの8バイトのビッグエンディアンをリトルエンディアンの長い表現に変換することです。
System.BitConverterは、ビッグエンディアンで実行できるLinuxで使用するためにMonoでコンパイルされ、リトルエンディアンであるVisual Studio for Windowsでコンパイルされるため、使用できません。
c# - IPv4 アドレスが特定の範囲内にあるかどうかをチェックするためのロジックを IPv6 に拡張する最善の方法を知りたいですか?
私は現在、他のいくつかのSO投稿から派生したこのメソッドを持っています:
IPv6 をサポートするためにこのロジックを拡張しようとすると、明らかにいくつかの落とし穴があります。すなわち:
- より長いフィールド長をサポートするには、Int32 の代わりに BigInt を使用する必要がありますか?
- IPv6 アドレスの表現は、簡単にバイトに変換できないように見えますか?
これに取り組む方法について誰かアドバイスがあるかどうか疑問に思っています。