問題タブ [byte-shifting]
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# - char配列からdoubleをキャストする方法
シリアル ポートから 3 文字をシフトしています。3 文字ごとに、ポート用に分割した double です。
(送信前の値 = 0x3F3400 または 0.703125)
これを再構築する方法を教えてください。私は double を十分に理解していません。double のどの部分が小数点なのか、記号なのかさえわかりません。
java - >32 ビット長のビットシフト
7 バイト配列から最初の 49 ビットを抽出しようとしています。次のように、マスクとビットシフトを使用してこのバイトにアプローチしました。
long byteVal = ((decryptedVCW[6] & 0xff)&((decryptedVCW[6] & 0xff)<<7)) | ((decryptedVCW[5] & 0xff) << 8) | ((decryptedVCW[4] & 0xff) << 16) | ((decryptedVCW[3] & 0xff) << 24) | ((decryptedVCW[2] & 0xff) << 32) | ((decryptedVCW[1] & 0xff) << 40) | ((decryptedVCW[0] & 0xff) << 48);
ここで、decryptedVCW は 56 ビットのバイト配列です。
マスキングとビット シフトは、32 ビット シフト「<<32」まで期待どおりに機能します。
例として、decryptedVCW の 16 進数は E865037A9C6424 で、バイナリでは次のようになります。
11101000011001010000001101111010100111000110010000100100
上記のシフトを実行すると、バイナリで 7AFC6503 が得られます。
1111010111111000110010100000011
ビットシフトが32以上でバラバラになる理由と、この問題を解決する方法を知っている人はいますか?
どうもありがとうシヴ
java - javaで左シフトして符号値を変更する理由
私はJavaに取り組んでいます。なぜJavaがこの出力を生成するのか疑問に思っています。ここでコードを共有しています。
そして、私は出力を得ました
出力は 0x0000019d になるはずだと思っていました
java - Javaでバイトを左にシフトすると符号付きビットが変更されますか?
私は持っている
これを行うと、実際に符号付きビットに1が入れられますか、それとも符号付きビットにあるものが切り捨てられ、符号付きビットが他の方法で変更されますか00011110
?11110000
また、これは-16
. どうしてこれなの?11110000
基数 10 は に等しいと思っていましたが、 がどこから来た-112
のか混乱しています。-16
c - 複数の値をパックする二項演算
データを送信するための Bluetooth モジュールで遊んでいます。データには、3 つの回転 (0 ~ 360) と 3 つのボタンの状態 (ビット (0 または 1)) が含まれます。
これを文字列にマッピングしてみました (例: 360_52_265_010% : x_y_z_bbb% % はデータ ストリームを終了するためのマークです) が、これを送信すると実際には最大 16 バイト (多かれ少なかれ) かかります。 )...
これは受け入れがたい。許容できない小さな遅延があるため、次のアイデアを思いつきました。
- 最大値が 360 であるため、1 つの回転軸 = 9 ビットのデータであり、最大 9 ビットを使用します。
- ボタンの状態には 3 回のローテーション + 3 ビットが必要なので、合計すると 30 ビットになります。
- インターウェブで最適なデータ型を検索したところ、Google からフロート (32 ビット) が返されました
Bluetooth接続を介して4バイトが17バイトをはるかに上回るため、これらすべての値を単一のフロートにマッピングすることを考えています(私は思う)
より良い解釈のために、私はうまくいくと思うものをこの美しい表現にしました:
現在、ビットシフトの経験はありません。主なコンセプトはわかっていますが、これを機能させることができないようです。私はこことここで他のいくつかの投稿を見ましたが、マスクは私を混乱させます.
だから私はそれを求めて、この小さなコードを試しました:
これは 67113578 の float 値を吐き出します (編集これは間違っています。この値は、コンソールに出力するために文字から文字列に変換されました)
そのため、誰かがこれらの値を 1 つの float にパックして元のデータに戻すのを手伝ってくれるかどうか疑問に思っていました。
助けてくれてありがとう!
javascript - javascript Uint32でバイト順を逆にする方法
chrome.sockets.udp プラグインを介して ArrayBuffer を送信する必要があります。
データは、Android ionic アプリを介して、コンピューター上で実行されるエミュレーターに送信されます。
次のフィールドを送信する必要があります。
このコードを実行すると、次の結果が得られます。
サーバーは次の結果を取得する必要があります。
サーバーが期待する順序でバイトを取得するには、dataView に数値を挿入する方法を教えてください。
java - シフト操作を使用して Java でコードポイントを utf-8 バイト配列に変換する
ここで受け入れられた回答を使用して、ユニコードからUTF-8コード単位に「手動で」変換しました。問題は、結果の UTF-8 をバイト配列に含める必要があることです。可能な限りシフト操作を使用して16進数からuft-8に変換するにはどうすればよいですか?
私がすでに持っているコードは次のとおりです。
バイトを適切に処理する方法がわからないので、私がやったことはおそらく間違っていることを認識しています。