Skip to content

Instantly share code, notes, and snippets.

@tyabu12
Last active August 24, 2017 09:21
Show Gist options
  • Save tyabu12/91dede37f44d4586b8b5695f38811bc7 to your computer and use it in GitHub Desktop.
Save tyabu12/91dede37f44d4586b8b5695f38811bc7 to your computer and use it in GitHub Desktop.
module VB
# 整数nの符号化
# バイト列のバイナリへの変換を忘れないこと!
def self.encode_number(n)
bytes = []
# ほげほげ
bytes # このままだと…
end
# 整数列numbersの符号化
def self.encode(numbers)
bytestream = ''
# ほげほげ
bytestream
end
# バイナリのバイト列から整数列へ復号化
# バイナリからバイト列への変換を忘れないこと!
def self.decode(bytestream)
numbers = []
n = 0
# ほげほげ
numbers
end
def self.encode_test
expects = [
[ 1, '10000001'],
[ 5, '10000101'],
[127, '11111111'],
[128, '00000001' + '10000000'],
[129, '00000001' + '10000001']
]
expects.each do |e|
res = encode_number(e[0]).unpack('B*')[0]
if res != e[1] then
STDERR.puts "Encode error: " +
"init=#{e[0]}, " +
"expect=#{e[1]}, " +
"result=#{res}"
end
end
end
def self.decode_test
1.upto(1000) do |i|
v = rand(1..(i+1))
res = decode(encode_number(v))[0]
STDERR.puts "Decode error: #{v}" if res != v
end
end
end
# テストの時にコメントアウトしてね
#VB.encode_test
#VB.decode_test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment