sierra - formatear macbook pro sin disco
C-formatear la dirección MAC (2)
Más o menos así: asigna una cadena de salida para mantener la dirección MAC reformateada. Itera sobre la cadena de entrada y usa strtok
con :
delimitador. En cada iteración convierta el comienzo de la cadena (2 bytes) en un valor numérico (por ejemplo, con atoi
). Si el resultado <16 (es decir, <0x10), configure "0"
en la cadena de salida en la posición actual y el resultado en hexadecimal en la siguiente posición; de lo contrario, copie los 2 bytes de la cadena de entrada. Adjuntar :
a la cadena de salida. Continúa hasta el final de la entrada.
Actualmente estoy trabajando con el análisis de algunas direcciones MAC. Me dieron un resultado que no incluye ceros a la izquierda (como ese).
char* host = "0:25:25:0:25:25";
y me gustaría formatearlo como tal
char* host = "00:25:25:00:25:25";
¿Cuál sería la forma más fácil de hacerlo?
Para aquellos que se preguntan, estoy usando la biblioteca libpcap.
Me puede estar perdiendo algo en la pregunta. Suponiendo que sepa que es un MAC válido, y la cadena de entrada es, por lo tanto, analizable, ¿ha considerado algo tan simple como:
char* host1 = "0:25:25:0:AB:25";
char *host2 = "0:1:02:3:0a:B";
char result[19];
int a,b,c,d,e,f;
// the question sample
if (sscanf(host1, "%x:%x:%x:%x:%x:%x", &a,&b,&c,&d,&e, &f) == 6)
sprintf(result, "%02X:%02X:%02X:%02X:%02X:%02X", a,b,c,d,e,f);
printf("host1: %s/n", result);
// a more daunting sample
if (sscanf(host2, "%x:%x:%x:%x:%x:%x", &a,&b,&c,&d,&e, &f) == 6)
sprintf(result, "%02X:%02X:%02X:%02X:%02X:%02X", a,b,c,d,e,f);
printf("host2: %s/n", result);
Salida
host1: 00:25:25:00:AB:25
host2: 00:01:02:03:0A:0B
Obviamente, para el ultra paranoide, querrás asegurarte de que af
sea todo <255, lo que probablemente sea preferible. Las razones fundamentales por las que prefiero esto donde el rendimiento no es un problema crítico son las muchas cosas que puede que no estés considerando en tu pregunta. Maneja todos
- Valores principales de
"n:"
, donden
es cualquier dígito hexadecimal; no solo cero Ejemplos:"5:"
,"0:"
- Valores medios de
":n:"
, nuevamente bajo las mismas condiciones que (1) arriba. Ejemplos:":A:"
,":0:"
- Valores de cola de
":n"
. una vez más, bajo las mismas condiciones que (1) arriba. Ejemplos:":b"
,":0"
- Hexagígono agnóstico cuando lee; funciona con caracteres de dígitos en mayúscula y minúscula.
- Lo más importante es que no hace nada (excepto los valores hexadecimales en mayúsculas) si su cadena de entrada ya está formateada correctamente.