Module: Nis::Util::Convert
- Defined in:
- lib/nis/util/convert.rb
Constant Summary collapse
- HEX_ENCODE_ARRAY =
%w[0 1 2 3 4 5 6 7 8 9 a b c d e f]
Class Method Summary collapse
- .bin2hex(bin) ⇒ String
-
.hex2a(hex) ⇒ String
Convert hex to string.
- .hex2bin(hex) ⇒ String
- .hex2bin_rev(hex) ⇒ String
-
.hex2ua(hex) ⇒ Array
Convert hex to Uint8Array.
-
.hex2ua_rev(hex) ⇒ Array
Reversed convertion of hex to Uint8Array.
-
.hex_to_utf8(hex_str) ⇒ string
Convert hex to UTF-8.
- .rstr2utf8(str) ⇒ String
-
.ua2hex(ua) ⇒ string
Convert an Array to hex.
-
.ua2words(ua, ua_length) ⇒ WordArray
Convert an Uint8Array to WordArray.
-
.utf8_to_hex(str) ⇒ string
Convert UTF-8 to hex.
-
.words2ua(words) ⇒ Array
Convert a wordArray to Uint8Array.
Class Method Details
.bin2hex(bin) ⇒ String
40 41 42 |
# File 'lib/nis/util/convert.rb', line 40 def self.bin2hex(bin) bin.map { |v| '%02x' % v }.join end |
.hex2a(hex) ⇒ String
Convert hex to string
22 23 24 |
# File 'lib/nis/util/convert.rb', line 22 def self.hex2a(hex) hex.scan(/../).inject('') { |memo, el| memo << el.hex.chr } end |
.hex2bin(hex) ⇒ String
28 29 30 |
# File 'lib/nis/util/convert.rb', line 28 def self.hex2bin(hex) hex2ua(hex).pack('C*') end |
.hex2bin_rev(hex) ⇒ String
34 35 36 |
# File 'lib/nis/util/convert.rb', line 34 def self.hex2bin_rev(hex) hex2ua_rev(hex).pack('C*') end |
.hex2ua(hex) ⇒ Array
Convert hex to Uint8Array
15 16 17 |
# File 'lib/nis/util/convert.rb', line 15 def self.hex2ua(hex) hex.scan(/../).map(&:hex) end |
.hex2ua_rev(hex) ⇒ Array
Reversed convertion of hex to Uint8Array
8 9 10 |
# File 'lib/nis/util/convert.rb', line 8 def self.hex2ua_rev(hex) hex2ua(hex).reverse end |
.hex_to_utf8(hex_str) ⇒ string
Convert hex to UTF-8
54 55 56 |
# File 'lib/nis/util/convert.rb', line 54 def self.hex_to_utf8(hex_str) [hex_str].pack('H*').force_encoding('UTF-8') end |
.rstr2utf8(str) ⇒ String
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/nis/util/convert.rb', line 97 def self.rstr2utf8(str) str.unpack('U*').inject('') do |memo, c| memo << case when c < 128 c.chr when 128 < c && c < 2048 (c >> 6 | 192).chr + (c & 63 | 128).chr else (c >> 12 | 224).chr + (c >> 6 & 63 | 128).chr + (c & 63 | 128).chr end end end |
.ua2hex(ua) ⇒ string
Convert an Array to hex
61 62 63 |
# File 'lib/nis/util/convert.rb', line 61 def self.ua2hex(ua) ua.inject('') { |memo, el| memo << "#{HEX_ENCODE_ARRAY[el >> 4]}#{HEX_ENCODE_ARRAY[el & 0x0f]}" } end |
.ua2words(ua, ua_length) ⇒ WordArray
Convert an Uint8Array to WordArray
69 70 71 72 73 74 75 76 77 |
# File 'lib/nis/util/convert.rb', line 69 def self.ua2words(ua, ua_length) ua[0, ua_length].each_slice(4).map do |chunk| x = chunk[0] * 0x1000000 + chunk[1] * 0x10000 + chunk[2] * 0x100 + chunk[3] * 0x1 x > 0x7fffffff ? x - 0x100000000 : x end end |
.utf8_to_hex(str) ⇒ string
Convert UTF-8 to hex
47 48 49 |
# File 'lib/nis/util/convert.rb', line 47 def self.utf8_to_hex(str) rstr2utf8(str).bytes.inject('') { |memo, b| memo << b.to_s(16) } end |
.words2ua(words) ⇒ Array
Convert a wordArray to Uint8Array
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/nis/util/convert.rb', line 83 def self.words2ua(words) words.inject([]) do |memo, v| temp = [] v += 0x100000000 if v < 0 temp[0] = (v >> 24) temp[1] = (v >> 16) & 0xff temp[2] = (v >> 8) & 0xff temp[3] = (v) & 0xff memo + temp end end |