2011-04-04 15 views

Respuesta

14

Una cuerda se trata como un vector de caracteres. Prueba esto:

>> string = '01 ED 01 F9 81 C6'; 
>> string(1:5), string(6:11), string(12:17) 

ans = 
01 ED 

ans = 
01 F9 

ans = 
81 C6 

string en este ejemplo no es una variable de un método. string(1) devuelve el primer carácter en la matriz (o vector) llamado string.

4

Si desea que sólo los caracteres no está en blanco se puede utilizar la función de ISSPACE para eliminar el espacio en blanco y luego matriz de caracteres de indexación para acceder a los caracteres:

 
>> s = '01 ED 01 F9 81 C6'; 
>> s = s(~isspace(s)) 

s = 

01ED01F981C6 

>> s(1:4) 

ans = 

01ED 

>> s(5:8) 

ans = 

01F9 

>> s(9:end) 

ans = 

81C6 

pueden ampliar esta procesar múltiples líneas de una arreglo de caracteres usando RESHAPE para transformar el resultado de la eliminación de espacios de nuevo a un 2D-array y luego hacer referencia a la dimensión extra:

 
s = ['01 ED 01 F9 81 C6'; 'F8 CA DD 04 44 3B'] 

s = 

01 ED 01 F9 81 C6 
F8 CA DD 04 44 3B 

>> s = reshape(s(~isspace(s)), size(s, 1), 12) 

s = 

01ED01F981C6 
F8CADD04443B 

>> s(:,1:4) 

ans = 

01ED 
F8CA 

>> s(:,5:8) 

ans = 

01F9 
DD04 

>> s(:,9:end) 

ans = 

81C6 
443B 
+0

@ trolle3000 y b3: gracias pero lo que si el archivo tiene un montón de valores 'F3 C1 81 F6 81 C5' '01 F0 41 F7 01 C6 ' '41 ED C1 F7 01 C6' entonces ¿Cómo trabajo en eso? – Dilip

+0

@Dilip: vea mi respuesta editada arriba que describe cómo procesar múltiples líneas. –

0

Como trolle3000 y B3 se ha mencionado, se utiliza soportes que contienen en dados para extraer subconjuntos de la cadena.

Para responder a la pregunta adicional de cómo trabajas en la cadena, te sugiero que dividas la cadena en cada espacio y conviertas de hexadecimal a números decimales.

s = '01 ED 01 F9 81 C6'; 
hex2dec(regexp(s, ' ', 'split')) 

ans = 
    1 
    237 
    1 
    249 
    129 
    198 
+0

gracias, pero mi problema es que tengo un archivo con 4000 líneas de código hexadecimal. Quiero dividirlas a granel, ¿cómo puedo hacer esto? – Dilip

Cuestiones relacionadas