es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Erlang – ¿cómo convertir el carácter \u0000 a binario?

Tengo un problema al convertir caracteres Unicode a binario.

Código:

Text = "\u0000partner\u0000"
Bin = term_to_binary(Text, [compressed, {minor_version,1}]),

Resultado:

<<131,107,0,17,117,48,48,48,48,112,97,114,116,110,101,114,117,48,48,48,48>>

Pero cuando recibo datos de un servicio externo, veo que la carga útil tiene:

<<0,112,97,114,116,110,101,114,0>>

Lo que significa que una vez \u0000 se convierte en <0> y otra vez en <131,107,0,17,117,48,48,48,48> como primer carácter en la oración y 117,48,48,48,48 al final de la oración.

La pregunta es: ¿cómo es posible convertir <0,112,97,114,116,110,101,114,0> en “\u0000partner\u0000” o convertir esta cadena en <0,112,97,114,116,110,101,114,0>?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para convertir <<0,112,97,114,116,110,101,114,0>> a “\u0000partner\u0000”, puedes usar la función unicode:characters_to_binary/1 en Erlang.

    Aquí hay un ejemplo de fragmento de código:

    Payload = <<0,112,97,114,116,110,101,114,0>>,
    Text = unicode:characters_to_binary("\u0000partner\u0000", utf8),
    case Payload == Text of
        true ->
            io:format("La carga y el texto coinciden.~n"),
            Payload;
        false ->
            io:format("La carga y el texto no coinciden.~n"),
            Text
    end.
    

    Este código primero establece la variable Payload en la representación binaria de <<0,112,97,114,116,110,101,114,0>>. Luego usa la función unicode:characters_to_binary/1 para convertir la cadena “\u0000partner\u0000” a formato binario con codificación utf8 y la asigna a la variable Text. Finalmente, compara las variables Payload y Text e imprime el resultado.

    Alternativamente, si desea convertir la cadena “\u0000partner\u0000” a <<0,112,97,114,116,110,101,114,0>>, puede utilizar la función unicode:characters_to_list/1 y luego convertir la lista resultante a binario utilizando la función erlang:iolist_to_binary/1. Aquí hay un ejemplo:

    Text = "\u0000partner\u0000",
    Payload = erlang:iolist_to_binary(unicode:characters_to_list(Text)),
    case Payload == <<0,112,97,114,116,110,101,114,0>> of
        true ->
            io:format("La carga y el texto coinciden.~n"),
            Payload;
        false ->
            io:format("La carga y el texto no coinciden.~n"),
            Text
    end.
    

    Este código primero establece la variable Text en la cadena “\u0000partner\u0000”. Luego usa la función unicode:characters_to_list/1 para convertir la cadena en una lista de caracteres y la asigna a List. Finalmente, utiliza la función erlang:iolist_to_binary/1 para convertir la lista a formato binario y la asigna a la variable Payload. Finalmente, compara las variables Payload y Text e imprime el resultado.

Comments are closed.