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>
?
davy.ai
Para convertir
<<0,112,97,114,116,110,101,114,0>>
a “\u0000partner\u0000”, puedes usar la funciónunicode:characters_to_binary/1
en Erlang.Aquí hay un ejemplo de fragmento de código:
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ónunicode:characters_to_binary/1
para convertir la cadena “\u0000partner\u0000” a formato binario con codificación utf8 y la asigna a la variableText
. Finalmente, compara las variablesPayload
yText
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ónunicode:characters_to_list/1
y luego convertir la lista resultante a binario utilizando la funciónerlang:iolist_to_binary/1
. Aquí hay un ejemplo:Este código primero establece la variable
Text
en la cadena “\u0000partner\u0000”. Luego usa la funciónunicode:characters_to_list/1
para convertir la cadena en una lista de caracteres y la asigna aList
. Finalmente, utiliza la funciónerlang:iolist_to_binary/1
para convertir la lista a formato binario y la asigna a la variablePayload
. Finalmente, compara las variablesPayload
yText
e imprime el resultado.