conversión de dirección IP

Un usuario Pregunto ✅

forajido

Hola
Tengo una columna con dirección IP.
Quiero hacer lo siguiente:
Ejemplo de dirección IP 172.180.180.34

Octeto 2
Tome el número del octeto 2 y réstelo con 176. Obtenga el número y elija un carácter de una variable
Variable = «0123456789abcdefghijklmnopqrstuvwxyz»
Entonces, si el octeto 2 es 180, el resultado sería:
180-176 = 4
Valor después de la posición 4 de la variable = 4

Octeto3
Convertir el número a hexadecimal
Entonces el octeto 3 es 180 y sería B4

Resultado en nuevo columna
resultado octeto 2+resultado octeto 3
3B4

En respuesta a forajido

Hola @desperado,

Luego use el siguiente código:

let
IP2Number = (

IP as text

) => let

currentIP = IP,
Alfa = {"0".."9"} & {"A".."Z"},
ListOfOctets = Text.Split(currentIP, "."),
Octet2 = Alfa{Value.Subtract(Value.FromText(ListOfOctets{1}),176)},
Octet3 = Number.ToText(Value.FromText(ListOfOctets{2}), "x"),
Result = try Text.Combine({Octet2, Octet3}) otherwise "unknown"
in
Result


in
IP2Number

Y tu verás:

vkellymsft_0-1623919619652.png

Para el archivo .pbix actualizado, consulte el archivo adjunto.

Atentamente,
Kelly

¿Respondí tu pregunta? ¡Marca mi publicación como una solución!

forajido

damas y caballeros
Esta es mi primera función de Power Query.
Basado en el escenario anterior, esto es lo que descubrí.
————————————————– —–

dejar
Número IP2 = (

IP como texto

) => dejar

IP actual = IP,
Alfa = {«0»..»9″} & {«A»..»Z»},
ListaDeOctetos = Texto.Dividir(IPactual, «.»),
Octeto2 = Alfa{Valor.Subtract(Valor.FromText(ListOfOctets{1}),176)},
Octeto3 = Número.AlTexto(Valor.DesdeTexto(ListaDeOctetos{2}), «x»),
Resultado = Texto.Combinar({Octeto2, Octeto3})
en
Resultado

en
Número IP2

————————————-

Por favor, hágamelo saber si es correcto pensar

forajido

En respuesta a forajido

Después de la prueba, necesito verificar el valor de octet2.
Si el valor de octet2 es negativo, entonces el resultado debe ser «desconocido»

No estoy familiarizado con if’s ….

En respuesta a forajido

Hola @desperado,

Modifique su código M de la siguiente manera:

let
IP2Number = (

IP as text

) => let

currentIP = IP,
Alfa = {"0".."9"} & {"A".."Z"},
ListOfOctets = Text.Split(currentIP, "."),
Octet2 = try Alfa{Value.Subtract(Value.FromText(ListOfOctets{1}),176)} otherwise "unknown",
Octet3 = Number.ToText(Value.FromText(ListOfOctets{2}), "x"),
Result = Text.Combine({Octet2, Octet3})
in
Result


in
IP2Number

Y tu verás:

vkellymsft_0-1623916170352.png

Para el archivo .pbix relacionado, consulte el archivo adjunto.

Atentamente,
Kelly

¿Respondí tu pregunta? ¡Marca mi publicación como una solución!

forajido

En respuesta a v-kelly-msft

Hola @v-kelly-msft

Gracias por la respuesta.
Funciona para octet2, pero quiero lo siguiente:
Si octet2 es negativo, omita octet3 y establezca el resultado en «desconocido»
Entonces, para IP 172.172.180.4, el resultado debería ser «desconocido» y no «desconocidob4»

De nuevo, gracias por la respuesta.

Octet2 = try Alfa{Value.Subtract(Value.FromText(ListOfOctets{1}),176)} otherwise "unknown",
Octet3 = Number.ToText(Value.FromText(ListOfOctets{2}), "x"),
Result = Text.Combine({Octet2, Octet3})
in
Result

En respuesta a forajido

Hola @desperado,

Luego use el siguiente código:

let
IP2Number = (

IP as text

) => let

currentIP = IP,
Alfa = {"0".."9"} & {"A".."Z"},
ListOfOctets = Text.Split(currentIP, "."),
Octet2 = Alfa{Value.Subtract(Value.FromText(ListOfOctets{1}),176)},
Octet3 = Number.ToText(Value.FromText(ListOfOctets{2}), "x"),
Result = try Text.Combine({Octet2, Octet3}) otherwise "unknown"
in
Result


in
IP2Number

Y tu verás:

vkellymsft_0-1623919619652.png

Para el archivo .pbix actualizado, consulte el archivo adjunto.

Atentamente,
Kelly

¿Respondí tu pregunta? ¡Marca mi publicación como una solución!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *