Conversion d'une valeur UINT16 en un tableau UINT8 [2]
Cette question est fondamentalement la seconde moitié de mes autres Question
Comment puis-je convertir un UINT16 valeur, dans un UINT8 * tableau sans boucle et en évitant endian problèmes.
Fondamentalement, je veux faire quelque chose comme ceci:
UINT16 value = 0xAAFF;
UINT8 array[2] = value;
Le résultat final de ce est de stocker la valeur dans un array UINT8 tout en évitant de conversion "endian".
UINT8 * mArray;
memcpy(&mArray[someOffset],&array,2);
Quand je n'ai tout simplement memcpy avec le UINT16 valeur, il convertit en little-endian qui ruine la sortie. Je suis en train d'essayer d'éviter d'utiliser endian fonctions de conversion, mais je pense que je peut juste être hors de la chance.
source d'informationauteur dp.
Vous devez vous connecter pour publier un commentaire.
Comment sur
Cela devrait fournir le même résultat indépendant de l'endianness.
Ou, si vous voulez utiliser un initialiseur de tableau:
(Toutefois, cela n'est possible que si
value
est une constante.)Il n'y a pas besoin de compilation conditionnelle. Vous pouvez décalage de bit pour obtenir la plus haute et l'octet de poids faible de la valeur:
Les distributions sont en option.
En supposant que vous voulez avoir l'octet de poids fort de la limite inférieure octet de poids fort dans le tableau:
Un plâtre temporaire à UINT16* devrait le faire:
J'ai utilisé ce fil de développer une solution qui s'étend sur des tableaux de plusieurs tailles: