Skip to content

Instantly share code, notes, and snippets.

@toomasv
Last active March 19, 2019 09:32
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save toomasv/a6d15d1c71a60fdd25b7c62b6a75f91d to your computer and use it in GitHub Desktop.
Intro to study of number basis
Red [
Author: "Toomas Vooglaid"
Date: 19-Mar-2019
Title: "Compare bases"
Purpose: {Introduction to study of number basis}
]
context [
set-bits: does [forall bits [pan/pane/(index? bits)/data: make logic! to-integer to-string bits/1]]
hexa: charset [#"0" - #"9" #"A" - #"F"]
bit: pan: num: bin: bits: hex: bi: hx: none
view [
title "Compare bases"
style bit: check 22x25 [
num/data: to-integer hx: debase/base bin/text: rejoin collect [
foreach-face pan [
keep make integer! face/data
]
] 2
hex/text: enbase/base hx 16
]
pan: panel [
origin 0x0
bit "7" bit "6" bit "5" bit "4" bit "3" bit "2" bit "1" bit "0"
] return
text "DEC:" 24
num: field 30 on-enter [
either all [face/data >= 0 face/data <= 255] [
bin/text: bits: take/last/part enbase/base hx: to-binary face/data 2 8
hex/text: take/last/part enbase/base hx 16 2
set-bits
][cause-error 'user 'message ["Enter integer 0..255"]]
]
text "BIN:" 22
bin: field 70 on-enter [
either parse face/text [8 [#"1" | #"0"]] [
bits: face/text
hex/text: enbase/base hx: debase/base bits 2 16
num/data: to-integer hx
set-bits
][cause-error 'user 'message ["Enter 8 bits (1 or 0)"]]
]
text "HEX:" 24
hex: field 25 on-enter [
either parse face/text [2 hexa] [
num/data: to-integer hx: debase/base face/text 16
bin/text: bits: enbase/base hx 2
set-bits
][cause-error 'user 'message ["Enter hexadecimal 00..FF"]]
]
]
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment