class Array
Public Instance Methods
modified_utf8_to_s()
click to toggle source
# File lib/java_dissassembler/array.rb, line 10 def modified_utf8_to_s new_str = "" bytes = self until bytes.empty? # Code points in the range '\u0001' to '\u007F' are represented by a single byte if (bytes[0] >> 7) == 0 new_str << bytes[0] bytes.shift # The null code point ('\u0000') and code points in the range '\u0080' to '\u07FF' are represented by a pair of bytes x and y elsif (bytes[0] >> 5) == 0b110 new_str << [((bytes[0] & 0x1f) << 6) + (bytes[1] & 0x3f)].pack("U") bytes.shift(2) # Code points in the range '\u0800' to '\uFFFF' are represented by 3 bytes elsif ((bytes[0] >> 4) == 0b1110) && (bytes[0] != 0b11101101) new_str << [((bytes[0] & 0xf) << 12) + ((bytes[1] & 0x3f) << 6) + (bytes[2] & 0x3f)].pack("U") bytes.shift(3) # Characters with code points above U+FFFF (so-called supplementary characters) are represented by separately encoding the # two surrogate code units of their UTF-16 representation elsif (bytes[0] == 0b11101101) && (bytes[3] == 0b11101101) new_str << [0x10000 + ((bytes[1] & 0x0f) << 16) + ((bytes[2] & 0x3f) << 10) + ((bytes[4] & 0x0f) << 6) + (bytes[5] & 0x3f)].pack("U") bytes.shift(6) else raise "Invalid \"Modified\" UTF-8 byte `#{bytes[0]}'" end end new_str end
u2()
click to toggle source
# File lib/java_dissassembler/array.rb, line 2 def u2 self.pack("C*").unpack("s>").first end
u4()
click to toggle source
# File lib/java_dissassembler/array.rb, line 6 def u4 self.pack("C*").unpack("N").first end