Tempo aproximado para leitura: 00:02:00 min
Dúvida
É possível converter um texto para binário incluindo o retorno do carro (carriage return | CR | Chr(13)), o salto de linha (line feed | LF | Chr(10)) e outros caracteres presentes na tabela ASCII?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80
Solução
Sim, porém será necessário o uso das funções abaixo:
Chr() | Converte um código ASCII para caractere |
Bin2Str()
|
Converte uma string com caracteres para uma string com o valor binário |
StrTran()
|
Pesquisa e substitui um conjunto de caracteres de uma string |
Fonte
// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"
// CONSTANTES NECESSÁRIAS
#Define ENTER Chr(10) + Chr (13) // SALTO DE LINHA (CARRIAGE RETURN + LINE FEED)
#Define TAB Chr(9) // TABULAÇÃO (TAB)
#Define BULLET Chr(7) // TÓPICO (BULLET POINT)
// CENÁRIO PARA CONVERSÃO
User Function MainFunct()
Local cMessage := "LINGUAGENS" + ENTER
// MONTAGEM DA MENSAGEM
cMessage += TAB + BULLET + " ADVPL" + ENTER
cMessage += TAB + BULLET + " TL++" + ENTER
cMessage += TAB + BULLET + " 4GL"
MsgInfo(cMessage) // VIDE ÁREA "MENSAGEM 01"
MsgInfo(Text2Bin(cMessage)) // VIDE ÁREA "MENSAGEM 02"
Return (NIL)
// CONVERTE UM TEXTO PARA BINÁRIO COM ZERO E UM
Static Function Text2Bin(cText)
Default cText :=""
// VALIDA O CONTEÚDO ENVIADO
If (ValType(cText) == "C" .And. !Empty(cText))
cText := StrTran(Bin2Str(cText), Space(1), "0")
cText := StrTran(cText, "x", "1")
EndIf
Return (cText)
Mensagem 01
LINGUAGENS
ADVPL
TL++
4GL
Mensagem 02
01001100010010010100111001000111010101010100000101000111010001010100111001010011000010100000110100001001000001110010000001000001010001000101011001010000010011000000101000001101000010010000011100100000010101000100110000101011001010110000101000001101000010010000011100100000001101000100011101001100
Saiba mais
CHR - ASCII para caractere
BIN2STR - String para binário
STRTRAN - Pesquisa e substitui uma string em outra
0 Comentários