JCPrata Posted May 26, 2006 at 04:53 PM Report #29610 Posted May 26, 2006 at 04:53 PM Boas, Tenho aqui uma duvida na conversao de uma estrutura para um array de bytes. Ja tentei cast explicitos e nao funciona. Struct x{ int a, int b, }; char[] xArray = (char[])x; Eu queria qualquer coisa deste genero, em que o array de char's/byte's neste caso iria ficar com oito posições ocupadas, devido a um inteiro ocupar quatro bytes. E claro depois também precisava de um cast ao contrario, passar um array de char's para uma Struct. Obrigado
TheDark Posted May 27, 2006 at 12:57 AM Report #29667 Posted May 27, 2006 at 12:57 AM Em 1º lugar, estás a declarar mal a variável xArray. Deveria ser: char xArray[](...) Depois, o tipo de cast que pretendes só pode ser feito entre apontadores. Por exemplo: struct xType { int a; int b; }; void main() { xType x; x.a=10; x.b=20; char *xArray = reinterpret_cast<char*>(&x); xType *x2 = reinterpret_cast<xType*>(xArray); } suponho que já faz o que pretendes. Vê este artigo sobre type casting 😁 Desaparecido.
JCPrata Posted May 27, 2006 at 05:25 PM Author Report #29709 Posted May 27, 2006 at 05:25 PM Obrigado, pelo menos a compilação não gera qualquer tipo de erro, ainda tenho de testar isto melhor. Grande site o de C++ 😛 nao conhecia, mas fica ja nos meus favoritos 😉 xType *x2 = reinterpret_cast<xType*>(xArray) Agora neste exemplo, se em vez de eu colocar xType*, colocar uma instancia xType, sera que ha algum problema? (Bem o melhor e compilar) Abraço
TheDark Posted May 27, 2006 at 09:07 PM Report #29736 Posted May 27, 2006 at 09:07 PM Ali onde está <xType*> estás a dizer o tipo de dados que queres que o compilador interprete. Se utilizares uma instância do tipo já não vai ser um tipo, e irá dar erro ao compilar. Desaparecido.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now