una sierra restaurar pro macbook mac imac high fábrica formatear disco desde cómo correctamente como cero aparece c formatting

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

  1. Valores principales de "n:" , donde n es cualquier dígito hexadecimal; no solo cero Ejemplos: "5:" , "0:"
  2. Valores medios de ":n:" , nuevamente bajo las mismas condiciones que (1) arriba. Ejemplos: ":A:" , ":0:"
  3. Valores de cola de ":n" . una vez más, bajo las mismas condiciones que (1) arriba. Ejemplos: ":b" , ":0"
  4. Hexagígono agnóstico cuando lee; funciona con caracteres de dígitos en mayúscula y minúscula.
  5. 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.