Todos los archivos son simplemente secuencias de números. Cada byte en un archivo representa un número en el rango [0..255]. Un archivo de texto es una secuencia de números, pero los valores de los bytes que componen el archivo de texto tienden a limitarse al rango [32..126] con algunos otros como 9, 10, 13. Esto se debe a que este rango de números también se define para tener un significado textual de acuerdo con la tabla ASCII:
Un .AMR (audio adaptativo de múltiples velocidades) es un archivo binario, lo que significa que los datos que contiene no representa texto, y probablemente utiliza el rango completo de [0..255]. Si intentara abrir un archivo de este tipo en un editor de texto como el bloc de notas, se vería como una tontería total. Si desea ver dentro de un archivo binario, es mejor usar un editor Hex. Encontrarás que tu archivo se parece a esto:
Siguesiendounatontería,peroalmenospuedesverlosdatosrepresentadosdevariasmaneras.Enelextremoderecho,escómoseveráelarchivosiseabreenuneditordetextomuybueno.(EnelBlocdenotasprobablementeseveríapeorqueesto).Puedesvermuchasletrasaleatorias,signosdepuntuaciónydivertidosquenoaparecenenlatablaASCIIdearriba.EsoesbásicamenteloquesucompiladordeCcreequeestátratandodedecircuando#incluyeelarchivo.ARM.
Enelpanelcentralpuedesverlosbytesrepresentadoscomonúmeroshexadecimales.Estaesunamaneramássignificativadeverunarchivobinario.Yestoesaproximadamentecómonecesitaqueseveasuarchivo.AMRantesdequesucompiladordeClocomprenda.
Siquisieracompilarelarchivoquesemuestraenlaimagendearriba,micompiladordeCquerríaveresto:
xdatacharmp3[]={0x1D,0x50,0xAA,0x37,0xD5,0x80,0x9B,.......};
Entonces,loquenecesitaesunaherramientaquepuedaconvertirunarchivobinarioenelcódigoC,dondecadabytedelarchivoseescribeenhexadecimal.
Afortunadamente,otraspersonassehanencontradoconesteproblemaanteriormenteyhanescritoherramientasparahacerlo.Puedeprobarestequesellama bin2h , o incluso este, que también se llama bin2h .