Outras bases
native! to-hex
Converte um integer! em um hexadecimal ( issue! datatype) com um # e 0's na frente).
>> to-hex 10
== #0000000A
>> to-hex 16
== #00000010
>> to-hex 15
== #0000000F
/size => Especifica o número de dígitos no resultado hexadecimal.
>> to-hex/size 15 4
== #000F
>> to-hex/size 10 2
== #0A
native! enbase e native! debase,
Estes são usados para codificar e decodificar strings codificadas em binário (binary -coded strings). Não é exatamente conversão de bases e, honestamente, eu não sei o uso disso, mas funciona assim:
>> enbase "my house"
== "bXkgaG91c2U="
>> probe to-string debase "bXkgaG91c2U="
"my house"
== "my house"
/base => base binária utilizada. Pode ser 64 (default), 16 ou 2.
>> enbase/base "Hi" 2
== "0100100001101001"
>> probe to-string debase/base "0100100001101001" 2
"Hi"
== "Hi"
native! dehex
Converte URLs que usam caracteres codificados em hexadecimal (%xx).
>> dehex "www.mysite.com/this%20is%20my%20page"
== "www.mysite.com/this is my page" ; Hex 20 (%20) é espaço " "
>> dehex "%33%44%55"
== "3DU"
; %33 é hex para "3", %44 é hex para "D" e %55 é hex para "U".
Funções de manipulação de bits (bitwise):
op! >> Red-specs Red-by-example
right shift - documentação diz: "os bits mais baixos são jogados fora e os mais altos duplicados".
>> 144 >> 2
== 36
Não consegui entender como duplicar o bit mais alto se for 1. Tentei usar palavras de 32 bits, mas o Red as converte para floats.
op! << Red-specs Red-by-example
left shift - bits mais altos são jogados fora, bit zero e adicionado à direita.
>> 17 << 1
== 34
op! >>> Red-specs Red-by-example
logical shift - bits mais baixos são jogados fora, zeros são adicionados à esquerda. Não entendo porque é diferente de >>.
op! and & and~ Red-specs Red-by-example
>> 27 and 50
== 18
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
27 |
||
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
50 |
||
and |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
18 |
A versão funcional (não infixa) de and é and~
op! or & or~ Red-specs Red-by-example
>> 27 or 50
== 59
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
27 |
||
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
50 |
||
or |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
59 |
A versão funcional (não infixa) de or é or~
op! xor & xor~ Red-specs Red-by-example
>> 27 xor 50
== 41
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
27 |
||
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
50 |
||
xor |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
41 |
A versão funcional (não infixa) de xor é xor~
action! complement Red-specs Red-by-example
a fazer -
a fazer