module PduSms::Helpers
Public Class Methods
decode_7bit(string)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 49 def self.decode_7bit(string) text = '' string.split('').each_slice(2).collect {|s| '%08b' % s.join.to_i(16)}.each_slice(7) do |bytes| ending = '' bytes.each_with_index do |byte, i| text << ('0%s%s' % [byte[i+1..-1], ending]).to_i(2).chr ending = byte[0..i] text << ('0%s' % ending).to_i(2).chr if i == 6 and ending.to_i(2) != 0 end end text end
decode_7bit_fill_bits(string, udhl)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 62 def self.decode_7bit_fill_bits(string, udhl) message = '' if udhl.to_i(16) == UDHL_SIZE_5 message << ("0%08b" % string[0..1].to_i(16))[0..-2].to_i(2).chr message << self.decode_7bit(string[2..-1]) else message << self.decode_7bit(string) end message end
decode_8bit(string)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 88 def self.decode_8bit(string) string.split('').enum_for(:each_slice, 2).to_a.collect(&:join).collect {|char| char.to_i(16).chr}.join end
decode_bcd(str)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 13 def self.decode_bcd(str) encode_bcd(str) end
decode_ucs2(message)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 17 def self.decode_ucs2(message) message.split('').enum_for(:each_slice,4).to_a.collect(&:join).collect {|o| o.to_i(16).chr(Encoding::UTF_8)}.join end
encode_7bit(string)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 33 def self.encode_7bit(string) string_encode = [] string.chars.each_slice(8).each do |chars| chars.each_with_index do |char, i| bit_char = '%07b' % char.ord if i == 0 string_encode << bit_char else string_encode[-1] = '%s%s' % [bit_char[-i..-1], string_encode[-1]] string_encode << bit_char[0..(-1-i)] if bit_char[0..(-1-i)] != '' end end end string_encode.collect {|x| '%02X' % x.to_i(2)}.join.upcase end
encode_7bit_fill_bits(string, udhl)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 73 def self.encode_7bit_fill_bits(string, udhl) message = '' if udhl.to_i(16) == UDHL_SIZE_5 message << '%02X' % ('%07b0' % string[0].ord).to_i(2) message << self.encode_7bit(string[1..-1]) else message << self.encode_7bit(string) end message end
encode_8bit(string)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 84 def self.encode_8bit(string) string.chars.to_a.collect {|char| '%02X' % char.ord }.join end
encode_bcd(str)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 5 def self.encode_bcd(str) if String == str.class and str.length % 2 == 0 str.split('').enum_for(:each_slice, 2).to_a.collect{|array| array[0], array[1] = array[1], array[0]}.join else raise ArgumentError, 'The number of characters must be even' end end
encode_ucs2(message)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 21 def self.encode_ucs2(message) message.chars.to_a.collect {|char| '%04X' % char.ord}.join end
is_7bit?(message)
click to toggle source
# File lib/pdu_sms/helpers.rb, line 25 def self.is_7bit?(message) result = true message.split('').each do |sym| result = false unless sym.ord >= 0 and sym.ord <= 127 end result end