問題タブ [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.

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

c# - char配列からdoubleをキャストする方法

シリアル ポートから 3 文字をシフトしています。3 文字ごとに、ポート用に分割した double です。

(送信前の値 = 0x3F3400 または 0.703125)

これを再構築する方法を教えてください。私は double を十分に理解していません。double のどの部分が小数点なのか、記号なのかさえわかりません。

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

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以上でバラバラになる理由と、この問題を解決する方法を知っている人はいますか?

どうもありがとうシヴ

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

java - javaで左シフトして符号値を変更する理由

私はJavaに取り組んでいます。なぜJavaがこの出力を生成するのか疑問に思っています。ここでコードを共有しています。

そして、私は出力を得ました

出力は 0x0000019d になるはずだと思っていました

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

java - Javaでバイトを左にシフトすると符号付きビットが変更されますか?

私は持っている

これを行うと、実際に符号付きビットに1が入れられますか、それとも符号付きビットにあるものが切り捨てられ、符号付きビットが他の方法で変更されますか00011110?11110000

また、これは-16. どうしてこれなの?11110000基数 10 は に等しいと思っていましたが、 がどこから来た-112のか混乱しています。-16

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

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 にパックして元のデータに戻すのを手伝ってくれるかどうか疑問に思っていました。

助けてくれてありがとう!

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

javascript - javascript Uint32でバイト順を逆にする方法

chrome.sockets.udp プラグインを介して ArrayBuffer を送信する必要があります。

データは、Android ionic アプリを介して、コンピューター上で実行されるエミュレーターに送信されます。

次のフィールドを送信する必要があります。

このコードを実行すると、次の結果が得られます。

サーバーは次の結果を取得する必要があります。

サーバーが期待する順序でバイトを取得するには、dataView に数値を挿入する方法を教えてください。

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

java - シフト操作を使用して Java でコードポイントを utf-8 バイト配列に変換する

ここで受け入れられた回答を使用して、ユニコードからUTF-8コード単位に「手動で」変換しました。問題は、結果の UTF-8 をバイト配列に含める必要があることです。可能な限りシフト操作を使用して16進数からuft-8に変換するにはどうすればよいですか?

私がすでに持っているコードは次のとおりです。

バイトを適切に処理する方法がわからないので、私がやったことはおそらく間違っていることを認識しています。