J'ai besoin d'aide pour interpréter une formule. C'est à partir de la documentation d'une balise que j'expérimente. Je l'ai écrit dans Swift mais je n'arrive pas à le faire fonctionner. Peu importe les valeurs de la variable de la température se termine comme 0.Opérations bit à bit dans Swift, lecture des valeurs à partir des données de balise
De la documentation:
* La principale ID diffuse les 8 bits les plus significatifs de l'humidité et les plus importantes 8 bits de la température et le mineur ID diffuse les 2 bits suivants de la température (pour un total des 10 bits les plus significatifs) et les 14 bits les moins significatifs de l'identificateur mineur comme réellement mineur configuré par l'utilisateur. Donc l'humidité est de 8 bits au total, et la température est de 10 bits au total.
Exemple:
donc l'humidité:
uint16_t Humidity = Major(As Hex value) & 0xFF00;
La température:
uint16_t temperature = ((Major(As Hex value) & 0x00FF) << 8) & ((Minor(As Hex value) &
0xC000) >> 8);
Le très mineur:
uint16_t Real Minor = Minor(As Hex value) & 0x03FF;
C'est ce que je suis venu avec et il semble correct mais t il résulte de la dernière opération de bits et retourne 0 *
let majorAnd = UInt16(beacon.major) & 0x00FF
let majorShift = majorAnd << 8
let minorAnd = UInt16(beacon.minor) & 0xC000
let minorShift = minorAnd >> 8
let temperatureResult = majorShift & minorShift
'|' serait plus approprié. C'est juste un coup de chance que '+ 'arrive à avoir le même résultat. – Alexander
@Alexander, a convenu que '|' est plus approprié. Édité. – vacawama