2017-07-31 96 views
-1

私は2つの特性から8ビットデータの形式、すなわちある特性uuidの8ビットデータともう1つの特性uuidのもう1つの8ビットデータの形式で値を送信するいくつかのBluetoothプロジェクトに取り組んでいます。2つの8ビットデータを加算して1つの16ビットデータを形成するにはどうすればよいですか?

私は最初の8ビットデータが最上位バイトであり、2番目の8ビットデータが最下位バイトであると考える必要があります。

私はそれらを16ビット値に組み合わせて結果を表示する必要があります。

私は素早くビットとバイトの変換をしていません。

私を助けてください。

ありがとうございます。

+1

可能な複製(HTTPS:/ /stackoverflow.com/questions/25267089/convert-a-two-byte-uint8-array-to-a-uint16-in-swift) –

答えて

2
let mostSignificantByte: UInt8 = 0x01 
let leastSignificantByte: UInt8 = 0x02 

let twoByteInteger = (UInt16(mostSignificantByte) << 8) | UInt16(leastSignificantByte) 

// twoByteInteger is 0x0102 
+0

ありがとうございました。ここであなたはmostSignificantByteを挙げました:UInt8 = 0x01は1を意味し、leastSignificantByte:UInt8 = 0x02は2を意味し、結果値は0x0102を意味します258。どのように動作するか教えてください。 –

+0

0x01と0x02はプレースホルダの値です。あなたの8ビット値が何であれそれらを置き換えてください。コードが行っていることについて: UInt16(x)は、8ビット整数を16ビット整数に変換するだけです。したがって、0x01は0x0001になります。 <<は左のビットシフト演算子です。値を何ビットか左に "プッシュ"します。この場合、左に8ビットシフトしたので、0x0001は0x0100になります。 そして、もちろん、2つの値をORします。したがって、0x0100 | 0x0002 == 0x0102。 したがって、2つの8ビット整数を1つの16ビット整数に結合しました。 –

+0

申し訳ありませんが、[UInt8]形式の形式で値を取得しています。私は上記の式を使用しようとするとエラーが表示されます。私を助けてください。 –

1

スウィフト3XとXcode 8.0

let byte1: UInt8 = 0x01 
    let byte2: UInt8 = 0x02 
    let bit16 = UnsafePointer([byte1,byte2]).withMemoryRebound(to: UInt16.self, 
                capacity: 1) { 
                 $0.pointee 
    } 
    print(bit16) // 513 

あなたはhere詳細に行くことができます

[スウィフト内のUInt16に2バイトのuint8配列を変換]の
+0

あなたがその質問の前に尋ねられ答えられたと思うなら、それを重複として*フラグすることができます。既存の回答を繰り返す必要はありません。 –

+0

@MartinRあなたは質問を複製してください。私は質問の重複をマークする権限を持つことができません –

+0

私はこの[1,0,0,0]すなわち[UInt8]のような一つの特性から価値を得ていますが、周辺では私は同じ0x01を2番目のものに対して送ります0x02私は[ 、0,0]。ここでは、これらの値を組み合わせて単一の16ビットを構成する方法を示します。 –

関連する問題