Module 1, Topic 2
In Progress

Binary Literals

Module Progress
0% Complete

I don’t know about you, but even after all these years of UNIX I still have some trouble interpreting octal permissions in my head. In this episode, you’ll learn about a special form of the integer literal syntax that can take the math out of bitfields.

I thought we could kick things off with something simple but handy. This week I'm going to do a short series on quoting and literals.

You probably already know a lot of the literal syntax in Ruby. Stuff like literal integers, floating point numbers, and strings.

42
3.14159
"foo"

You probably also know that like many languages, Ruby has a literal syntax for hexidecimal and octal numbers:

0x7FFF # => 32767
0755   # => 493

Octal numbers are useful for things like specifying unix file permissions.

require 'fileutils'
include FileUtils

chmod 0755, 'somefile'

Ruby also supports a slightly less common type of integer literal: binary literals. I don't know about you, but even after all these years of UNIX I still have some trouble translating octal numbers into permissions, and vice-versa, in my head. This is one place binary literals can come in handy.

Let's take a look at the previous example, only using a binary literal this time. First, we'll start with a reminder of the order of permissions bits. From left to write, we have permissions for user, group, and other.

# U  G  O
# rwxrwxrwx

Now underneath that, we'll spell out our permission mask as a binary literal.

# U  G  O
# rwxrwxrwx
0b111101101

Just to check, we'll translate that to octal form.

perms = 0b111101101
perms.to_s(8) # => "755"

Now with our permissions mask in hand, we can set permissions, confident that we've set the desired bits.

chmod perms, 'somefile'

And that's it for today. Happy hacking!

Responses

Get free development tips in your inbox🌱

The DevSeeds newsletter brings developer tips from the Graceful.Dev garden straight to your inbox. Sign up for free articles, discounts, and news!