module Gogyou::Extensions::Integer
Public Instance Methods
extendsign(bits)
click to toggle source
# File lib/gogyou/extensions.rb, line 270 def extendsign(bits) n = self & Integer.bitmask(0, bits) if (n >> (bits - 1)) == 0 n else n | (~0 << bits) end end
extendsign_char()
click to toggle source
# File lib/gogyou/extensions.rb, line 279 def extendsign_char ((self & 0xff) ^ 0x80) - 0x80 end
getbit(shift, bits)
click to toggle source
# File lib/gogyou/extensions.rb, line 243 def getbit(shift, bits) (self >> shift) & Integer.bitmask(0, bits) end
getbits(shift, bits)
click to toggle source
# File lib/gogyou/extensions.rb, line 247 def getbits(shift, bits) getbit(shift, bits).extendsign(bits) end
getbitset(*bitsize)
click to toggle source
# File lib/gogyou/extensions.rb, line 251 def getbitset(*bitsize) shift = 0 list = [] bitsize.each do |bits| if bits > 0 list << getbit(shift, bits) shift += bits else list << 0 end end list end
setbit(shift, bits, num)
click to toggle source
# File lib/gogyou/extensions.rb, line 265 def setbit(shift, bits, num) mask = Integer.bitmask(shift, bits) (self & ~mask) | ((num << shift) & mask) end
swap128()
click to toggle source
# File lib/gogyou/extensions.rb, line 384 def swap128 (swap64 << 64) | (self >> 64).swap64 end
swap128s()
click to toggle source
# File lib/gogyou/extensions.rb, line 388 def swap128s (swap64s << 64) | (self >> 64).swap64 end
swap16()
click to toggle source
# File lib/gogyou/extensions.rb, line 292 def swap16 n = self & 0xffff ((n >> 8) & 0xff) | ((n & 0xff) << 8) end
swap16s()
click to toggle source
# File lib/gogyou/extensions.rb, line 297 def swap16s n = self & 0xffff ((n >> 8) & 0xff) | ((n & 0xff).extendsign_char << 8) end
swap24()
click to toggle source
# File lib/gogyou/extensions.rb, line 302 def swap24 n = self & 0xffffff ((n >> 16) & 0xff) | (n & 0xff00) | ((n & 0xff) << 16) end
swap24s()
click to toggle source
# File lib/gogyou/extensions.rb, line 309 def swap24s n = self & 0xffffff ((n >> 16) & 0xff) | (n & 0xff00) | ((n & 0xff).extendsign_char << 16) end
swap32()
click to toggle source
# File lib/gogyou/extensions.rb, line 316 def swap32 n = self & 0xffffffff ((n >> 24) & 0xff) | ((n >> 8) & 0xff00) | ((n & 0xff00) << 8) | ((n & 0xff) << 24) end
swap32s()
click to toggle source
# File lib/gogyou/extensions.rb, line 324 def swap32s n = self & 0xffffffff ((n >> 24) & 0xff) | ((n >> 8) & 0xff00) | ((n & 0xff00) << 8) | ((n & 0xff).extendsign_char << 24) end
swap48()
click to toggle source
# File lib/gogyou/extensions.rb, line 332 def swap48 n = self & 0xffffffffffff ((n >> 40) & 0xff) | ((n >> 24) & 0xff00) | ((n >> 8) & 0xff0000) | ((n & 0xff0000) << 8) | ((n & 0xff00) << 24) | ((n & 0xff) << 40) end
swap48s()
click to toggle source
# File lib/gogyou/extensions.rb, line 342 def swap48s n = self & 0xffffffffffff ((n >> 40) & 0xff) | ((n >> 24) & 0xff00) | ((n >> 8) & 0xff0000) | ((n & 0xff0000) << 8) | ((n & 0xff00) << 24) | ((n & 0xff).extendsign_char << 40) end
swap64()
click to toggle source
# File lib/gogyou/extensions.rb, line 352 def swap64 n = self & 0xffffffffffffffff ((n >> 56) & 0xff) | ((n >> 40) & 0xff00) | ((n >> 24) & 0xff0000) | ((n >> 8) & 0xff000000) | ((n & 0xff000000) << 8) | ((n & 0xff0000) << 24) | ((n & 0xff00) << 40) | ((n & 0xff) << 56) end
swap64s()
click to toggle source
# File lib/gogyou/extensions.rb, line 364 def swap64s n = self & 0xffffffffffffffff ((n >> 56) & 0xff) | ((n >> 40) & 0xff00) | ((n >> 24) & 0xff0000) | ((n >> 8) & 0xff000000) | ((n & 0xff000000) << 8) | ((n & 0xff0000) << 24) | ((n & 0xff00) << 40) | ((n & 0xff).extendsign_char << 56) end
swap96()
click to toggle source
# File lib/gogyou/extensions.rb, line 376 def swap96 (swap48 << 48) | (self >> 48).swap48 end
swap96s()
click to toggle source
# File lib/gogyou/extensions.rb, line 380 def swap96s (swap48s << 48) | (self >> 48).swap48 end
swapbyte(bytesize)
click to toggle source
# File lib/gogyou/extensions.rb, line 283 def swapbyte(bytesize) num = 0 bytesize.times do |i| num <<= 8 num |= (self >> (i * 8)) & 0xff end num end