Quiero convertir una dirección MAC 00163e2fbab7 (almacenada como una cadena) a su representación de cadena 00: 16: 3e: 2f: ba: b7. ¿Cuál es la forma más fácil de hacer esto?Cómo convertir un número MAC a una cadena MAC?
Respuesta
utilizar un método completamente tortuosa para tomar ventaja de una función existente de que los grupos de dos caracteres hexadecimales a la vez:
>>> ':'.join(s.encode('hex') for s in '00163e2fbab7'.decode('hex'))
'00:16:3e:2f:ba:b7'
Actualización para Python 3:
>>> ':'.join(format(s, '02x') for s in bytes.fromhex('00163e2fbab7'))
'00:16:3e:2f:ba:b7'
+1 perfecto! esto sería lo correcto para hacer – juliomalegria
+1 Esta solución se siente más natural. –
Utilizando el grouper idiomzip(*[iter(s)]*n)
:
In [32]: addr = '00163e2fbab7'
In [33]: ':'.join(''.join(pair) for pair in zip(*[iter(addr)]*2))
Out[33]: '00:16:3e:2f:ba:b7'
También es posible, (y, de hecho, un poco más rápido):
In [36]: ':'.join(addr[i:i+2] for i in range(0,len(addr),2))
Out[36]: '00:16:3e:2f:ba:b7'
Lo mismo para mí: wow (¡las herramientas de iteración son geniales!). Gracias por compartir – jlandercy
Si usted tiene una cadena s
que desea unirse con dos puntos , Esto debería funcionar.
':'.join([s[i]+s[i+1] for i in range(0,12,2)])
's [i] + s [i + 1]' ==> 's [i: i + 2]' –
@StevenRumbalski Esto no es lo mismo. Cambiarlo de esta manera devolvería una matriz de dos elementos. Podría usar ''' .join (s [i: i + 2])'. –
@Michaelior: No estoy seguro de lo que quiere decir. '':'. join ([s [i] + s [i + 1] para i en rango (0,12,2)])' da el mismo resultado que '':'. join ([s [i: i + 2] para i en rango (0,12,2)]) 'cuando lo ejecuto. String slicing no devuelve una matriz. –
Si está adicto a las expresiones regulares puede probar este enfoque antiponético:
>>> import re
>>> s = '00163e2fbab7'
>>> ':'.join(re.findall('..', s))
'00:16:3e:2f:ba:b7'
> funciona bien con Python 3
ap_mac = b'\xfe\xdc\xba\xab\xcd\xef'
decoded_mac = hexlify(ap_mac).decode('ascii')
formatted_mac = re.sub(r'(.{2})(?!$)', r'\1:', decoded_mac)
- 1. Cómo convertir una cadena numérica a número (decimal) y número a cadena
- 2. ¿Cómo convertir una representación de cadena de un número a un número en coldfusion?
- 3. Bash: ¿Cómo convertir un número en una cadena de mes?
- 4. ¿Cómo puedo convertir una cadena en un número en Perl?
- 5. Cómo convertir un int a una cadena?
- 6. Cómo convertir un HTMLElement a una cadena
- 7. Convertir ssh clave generada en mac a ppk
- 8. Portar una Aplicación GTK + a Mac OSX
- 9. Convertir cadena a número decimal en ruby
- 10. ¿Cómo convertir un número a un byte?
- 11. convertir mov a .M4V con terminal de Mac
- 12. convertir la aplicación java a mac installer ... dmg
- 13. Identificador único de una Mac?
- 14. Ruby en Mac OSX a través de puertos Mac
- 15. Javascript para convertir una cadena en un número?
- 16. conecte una aplicación iOS (iPhone) a mac?
- 17. Imita una conexión a Internet lenta (mac)
- 18. mayúscula a minúscula en bash en un mac
- 19. ¿Cómo convertir un número negativo a positivo?
- 20. ¿Cómo convertir un int a una cadena hexagonal?
- 21. ¿Cómo incrusto datos en una sección TEXT del archivo binario mac-o de Mac OS X?
- 22. Convertir un número entero en una cadena sin asignar memoria
- 23. Cómo convertir cadena en número en gnuplot
- 24. rieles convertir cadena al número
- 25. ¿Cómo salgo de una aplicación mac programáticamente?
- 26. convertir un número entero en una cadena como 3
- 27. ¿Cómo convertir palabras a un número?
- 28. ¿Cómo "Skin" una aplicación en Mac?
- 29. Mac: conectar automáticamente a IOBluetoothDevice
- 30. Cómo convertir cadena a número (flotante) en Perl
¿Cómo se obtiene la dirección MAC, y cómo se almacenan en su programa ahora? Dado que no cabe en un entero de 32 bits, ¿quizás ya lo tiene como una cadena que solo necesita ser reformateado? –
@Joachim: Se almacena como una cadena. – Bruce