
Eu tenho uma variável do tipo UNSIGNED INT (ou seja uma variável não sinalizada).
Como eu faço para transformar uma UNSIGNED INT em uma variável sinalizada do tipo SIGNED INT?
Afi....

Moderadores: andre_luis, 51
unsigned int u;
int i;
u = (unsigned int)0xFFFFFFFF;
i = (int)u;
Guri escreveu:Eu estou meio sem ideias, preciso de ajuda:![]()
Eu tenho uma variável do tipo UNSIGNED INT (ou seja uma variável não sinalizada).
Como eu faço para transformar uma UNSIGNED INT em uma variável sinalizada do tipo SIGNED INT?
Afi....
KrafT escreveu:Ô Guri, me diz uma coisa... Tu faz projetos fantásticos de equipamentos profissionais de áudio e tem uma dúvida dessas?
Eu fiquei mais de ano sem acessar o fórum e vejo vc ainda solta uma dessas periodicamente... Tu faz isso para animar o fórum, não?![]()
Brincadeira, tá? manda um abraço pro Vonillmann
Guri escreveu:Eu tenho uma tabela enorme com amostras de aúdio, ela foi feita em formato "unsigned", onde o offset de ZERO do áudio é 0x80 (como exemplo 8bits), agora eu quero um offsset onde o ZERO do audio será 0x00 e para isso ocorrer teria que ser uma variável "signed". E como consequencia a tabela de ondas com o audio, teria que ser toda sinalizada.
Acabei resolvendo o dilema utilizando tudo unsigned como era o original e para fazer zerar essa variável eu utilizei outra variável unsigned que decresce o volume da tabela de ondas até zerar (controle de volume automático, se assim posso dizer), assim meu offset na saída de cada canal de audio será ZERO 0x00, mesmo que esteja utilizando unsigned com offset 0x80.
Agradeço a todas as dicas...Obrigado
valor_signed = valor_tabela & 0x7F;
if (valor_tabela < 0x80)
valor_signed -= 0x80;
Guri escreveu:
Eu tenho uma tabela enorme com amostras de aúdio, ela foi feita em formato "unsigned", onde o offset de ZERO do áudio é 0x80 (como exemplo 8bits), agora eu quero um offsset onde o ZERO do audio será 0x00 e para isso ocorrer teria que ser uma variável "signed". E como consequencia a tabela de ondas com o audio, teria que ser toda sinalizada.
KrafT escreveu:Guri escreveu:
Eu tenho uma tabela enorme com amostras de aúdio, ela foi feita em formato "unsigned", onde o offset de ZERO do áudio é 0x80 (como exemplo 8bits), agora eu quero um offsset onde o ZERO do audio será 0x00 e para isso ocorrer teria que ser uma variável "signed". E como consequencia a tabela de ondas com o audio, teria que ser toda sinalizada.
Bah, tchê...
Posso estar sendo leviano, mas uma "tabela com offset de Zero em 0x80" é uma tabela de 8 bits signed. Se só zero obedece esse formato e os demais valores não, então a tabela está mal construída ou corrompida, pois seus tipos de dados não são consistentes. Ou ainda, é uma nova codificação, tipo "codificação de KrafT" cuja única regra é não permitir um registro nulo, e por isso um bit "é queimado" só para atender à mesma.
Eu iria na sugestão do Vtrx, de corrigir a tabela. E não de alterar o software para lidar com tabelas mal construídas.
Guri escreveu:
Tranquilo Kraft![]()
A tabela esta correta: O arquivo foi salvo em unsigned char 8 bits, por isso o offset (ZERO) é = 0x80, caso fosse salva em signed char o offset (ZERO) seria 0x00. A dica cfreund é interessante.
Voltar para STMicroelectronics
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante