¿Cómo convertir un número binario de 16 con signo a un número decimal en Matlab?
Borrar todo
Centro de control de croma
%%Leer datos hexadecimales
FID = fopen(' C:\Users\Administrator\Desktop\test\data_hex.txt','r+');
if fid == -1
disp('fopen falló');
Otro
ReadData = textscan(fid, ' % s ');
Fin
fclose(FID);
%% lee un número en base 16 de la matriz de celdas y lo convierte en datos sin firmar.
Para I = 1:longitud(leer datos { 1 })
datos(I)= hex 2 dec(ReadData { 1 } { I });
Fin
%%Convierta datos sin firmar en datos firmados de acuerdo con el ancho de bits de los datos (los datos sin firmar no requieren esta operación).
Para i=1: longitud(datos)
if(data(i)>2 8/2-1)% rango de datos con signo de 8 bits de ancho [-128, 127 ], (2 8/2-1 = 127), modificado según el ancho de broca real.
datos _ dec(I)= datos(I)-2^8
Otros
datos _ dec(I)= datos(I);
Fin
Fin
Datos extendidos
Matlab lee números hexadecimales
Enviar por puerto serie Los datos enviados al host suele estar en base 16, y nuestros datos de comparación intuitivos están en forma de base 10, lo que requiere convertir la base 16 en base 10.
Después de guardar los datos recopilados en un archivo TXT a través del asistente de depuración del puerto serie, la primera pregunta es cómo lee Matlab el valor del archivo TXT. Matlab tiene una función textread, que se puede implementar. Por supuesto, también puedes usar fopen, pero textread es relativamente simple. Para el uso de lectura de texto, consulte la documentación de ayuda. La conversión de 16 a 10 utiliza otra función de matlab, hex2dec(a).
Leer archivo de texto binario:
Si el contenido del documento de texto es 0001 0010 001 0100 1000, se guarda en el documento pin.txt.
Utilice a=textread('pin.txt ', ' %s ')'
a = ' 0001 ' ' 0010 ' ' 0011 ' ' 0100 ' ' 1000 '
Puedes ver que los datos se guardan en formato char.