Module: RCNB
- Defined in:
- lib/rcnb.rb,
lib/rcnb/cli.rb,
lib/rcnb/str.rb,
lib/rcnb/version.rb
Overview
Defined Under Namespace
Class Method Summary collapse
-
.decode(str, encoding = nil) ⇒ String
将RCNB密文解码为文本.
-
.encode(str, encoding = nil) ⇒ String
将文本编码为RCNB密文.
Class Method Details
.decode(str, encoding = nil) ⇒ String
将RCNB密文解码为文本
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/rcnb.rb', line 146 def self.decode(str,encoding=nil) raise ArgumentError,'invalid length' unless (str.size & 1).zero? arr=[] 0.upto( (str.size>>2)-1 ) do |i| i4=i*4 short=decodeShort(str[i4,4]) arr<< (short>>8) arr<< (short&0xFF) end arr<< decodeByte(str[-2,2]) unless (str.size & 2).zero? result=arr.pack('C*') if encoding result=result.force_encoding(encoding) result=result.encode(__ENCODING__) else result=result.force_encoding(__ENCODING__) end result end |
.encode(str, encoding = nil) ⇒ String
将文本编码为RCNB密文
130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/rcnb.rb', line 130 def self.encode(str,encoding=nil) str=str.encode(encoding) if encoding arr=str.unpack('C*') result='' 0.upto( (arr.size>>1)-1 ) do |i| i2=i*2 result+=encodeShort( arr[i2]<<8 | arr[i2+1] ) end result+=encodeByte(arr[arr.size-1]) unless (arr.size & 1).zero? result end |