J'ai un flux de données de 4 octets, je sais à quelle morsure je voulais les séparer et les affecter à une variable différente. en gardant à l'esprit les données que je reçois est en format hexadécimal. disons,comment puis-je déchiffrer les données de 4 octets les diviser en conséquence et les affecter à une variable significative?
P_settings 4bytes p_timeout [6:0]
p_s_detected[7]
p_o_timeout [14:8]
p_o_timeout_set [15]
override_l_lvl [23:16]
l_b_lvl [31:24]
ci-dessus P_settings est de 4 octets et je voulais les diviser en petits morceaux comme octet p_timeout [6:0] requires 7 bits of those 4 byte.
Actuellement, la mise en œuvre, je l'ai essayé is..for juste un octet divisé en petits morceaux.
var soch = ((b_data>> 0)& 0x7F); if i want first 7 bits
comment dois-je faire pour 4 octets flux
Avez-vous pensé à utiliser un uint? C'est 32 bits. Généralement, si les bits que vous voulez sont divisés sur des octets différents dans une valeur de 4 octets, vous n'avez pas à vous soucier du fait qu'ils sont dans des octets séparés. c'est-à-dire le résultat d'octet = ((b_data & 0x000ff000) >> 12) retirerait les bits 12 - 20. –