읽기를 포켓벨 입력 숫자로 변환 Pokebell gem
계기
문자열을 포켓벨의 숫자열로 암호화, 또 포켓벨의 숫자열에서 문자열로 복호화한다는 것이 실려 있었으므로 스스로, 코드를 써 보았습니다.
Ruby로 암호화, 복호화 - Qiita
「암호화라고는 말할 수 없다고 생각하나, 숫자 그대로 읽을 수 있는 인종이 있었고(해설:메세지를 표시할 수 있는 포켓벨이 나온 당초는 숫자 밖에 표시할 수 없었기 때문에, 뇌내에서 복호화했다).그렇다 해도 , 이것을 해시의 테이블로 취급하는 것은 능숙하지 않은 것 같은 생각이 든다…문자 코드로 잘 취급할 수 있을까」
라고 생각한 것이 계기입니다.
그러나 도가니에 걸렸습니다.
왜냐하면…
설치
rubugems로 설치하십시오.
$ gem install pokebell
출처
Github에 올리고 있습니다.
riocampos/pokebell
사용법
히라가나, 카타카나, 숫자, 알파벳(대문자/소문자, 전각/반각), 기호의 일부를 포켓벨의 두 자리 숫자로 변환합니다. 탁점이나 반탁점도 문제없이 변환합니다(반각 가나 변환시에 이용한 NKF 라이브러리 덕분입니다).
pokeberu = Pokebell.new("ぽけべる")
pokeberu.pokebell #=> "650524640493"
pokeberu.code #=> "650524640493"
pokeberu.str #=> "ぽけべる"
pokeberu.to_a #=> "ぽけべる"
변환 표
이 테이블을 참고로 했습니다.
벨을 치는 것 - 2 터치 입력 - (It's fine today!)
나중에 검색하면 이런 것도있었습니다.
【무사시노 전파의 프로토타이퍼즈】피포파음을 해독하는 DTMF 디코더를 만들어 포켓벨 치기에 도전!
덧붙여 테이블의 오른쪽 부분이 다른 것도 있었습니다.
오봉 휴가. . . 4 - 우메짱의 쇼~도 없는 매일♪
DoCoMo와 그 외(텔레메시지계)의 회사에서 다른 것이 아닐까 생각됩니다만, 이번 Pokebell gem 로 거론한 변환 테이블이 어느 것인가는 불명합니다 (아마 DoCoMo 겠지만).
변환 테이블 부분
어쨌든 일부는 해시 테이블이되었습니다.
class Pokebell
def encode(code)
code2pokebell_hash = {
166 => "02", # を
63 => "67", # ?
33 => "68", # !
45 => "69", # −
304 => "69", # ー
47 => "60", # /
92 => "76", # ¥
38 => "77", # &
40 => "82", # (
41 => "84", # )
42 => "86", # *
35 => "87", # #
32 => "88", # 全角スペース
350 => "04", # ゛
351 => "05", # ゜
}
case code
when 167..171 # ぁ-ぉ
code = code + 10
when 172..174 # ゃ-ょ
code = code + 40
when 175 # っ
code = code + 19
when 97..122 # a-z
code = code - 32
end
case code
when 177..211 # あ-も
digit(code, 177, 1, 1)
when 215..220 # ら-わ
digit(code, 215, 9, 1)
when 221..223 # ん゛゜
digit(code, 220, 0, 2)
when 212..214 # や-よ
second_digit, first_digit = (code - 212).divmod(3)
"#{(second_digit + 8) % 10}#{first_digit * 2 + 1}"
when 65..90 # A-Z
digit(code, 65, 1, 6)
when 49..57 # 1-9
digit(code, 49, 9, 6)
when 48 # 0
"00"
when *code2pokebell_hash.keys
code2pokebell_hash[code]
else
raise "out of aiming charactor area"
end
end
def digit(code, base, first_digit_base, second_digit_base)
second_digit, first_digit = (code - base).divmod(5)
"#{(second_digit + first_digit_base) % 10}#{(first_digit + second_digit_base) % 10}"
end
end
TODO
rubugems로 설치하십시오.
$ gem install pokebell
출처
Github에 올리고 있습니다.
riocampos/pokebell
사용법
히라가나, 카타카나, 숫자, 알파벳(대문자/소문자, 전각/반각), 기호의 일부를 포켓벨의 두 자리 숫자로 변환합니다. 탁점이나 반탁점도 문제없이 변환합니다(반각 가나 변환시에 이용한 NKF 라이브러리 덕분입니다).
pokeberu = Pokebell.new("ぽけべる")
pokeberu.pokebell #=> "650524640493"
pokeberu.code #=> "650524640493"
pokeberu.str #=> "ぽけべる"
pokeberu.to_a #=> "ぽけべる"
변환 표
이 테이블을 참고로 했습니다.
벨을 치는 것 - 2 터치 입력 - (It's fine today!)
나중에 검색하면 이런 것도있었습니다.
【무사시노 전파의 프로토타이퍼즈】피포파음을 해독하는 DTMF 디코더를 만들어 포켓벨 치기에 도전!
덧붙여 테이블의 오른쪽 부분이 다른 것도 있었습니다.
오봉 휴가. . . 4 - 우메짱의 쇼~도 없는 매일♪
DoCoMo와 그 외(텔레메시지계)의 회사에서 다른 것이 아닐까 생각됩니다만, 이번 Pokebell gem 로 거론한 변환 테이블이 어느 것인가는 불명합니다 (아마 DoCoMo 겠지만).
변환 테이블 부분
어쨌든 일부는 해시 테이블이되었습니다.
class Pokebell
def encode(code)
code2pokebell_hash = {
166 => "02", # を
63 => "67", # ?
33 => "68", # !
45 => "69", # −
304 => "69", # ー
47 => "60", # /
92 => "76", # ¥
38 => "77", # &
40 => "82", # (
41 => "84", # )
42 => "86", # *
35 => "87", # #
32 => "88", # 全角スペース
350 => "04", # ゛
351 => "05", # ゜
}
case code
when 167..171 # ぁ-ぉ
code = code + 10
when 172..174 # ゃ-ょ
code = code + 40
when 175 # っ
code = code + 19
when 97..122 # a-z
code = code - 32
end
case code
when 177..211 # あ-も
digit(code, 177, 1, 1)
when 215..220 # ら-わ
digit(code, 215, 9, 1)
when 221..223 # ん゛゜
digit(code, 220, 0, 2)
when 212..214 # や-よ
second_digit, first_digit = (code - 212).divmod(3)
"#{(second_digit + 8) % 10}#{first_digit * 2 + 1}"
when 65..90 # A-Z
digit(code, 65, 1, 6)
when 49..57 # 1-9
digit(code, 49, 9, 6)
when 48 # 0
"00"
when *code2pokebell_hash.keys
code2pokebell_hash[code]
else
raise "out of aiming charactor area"
end
end
def digit(code, base, first_digit_base, second_digit_base)
second_digit, first_digit = (code - base).divmod(5)
"#{(second_digit + first_digit_base) % 10}#{(first_digit + second_digit_base) % 10}"
end
end
TODO
히라가나, 카타카나, 숫자, 알파벳(대문자/소문자, 전각/반각), 기호의 일부를 포켓벨의 두 자리 숫자로 변환합니다. 탁점이나 반탁점도 문제없이 변환합니다(반각 가나 변환시에 이용한 NKF 라이브러리 덕분입니다).
pokeberu = Pokebell.new("ぽけべる")
pokeberu.pokebell #=> "650524640493"
pokeberu.code #=> "650524640493"
pokeberu.str #=> "ぽけべる"
pokeberu.to_a #=> "ぽけべる"
변환 표
이 테이블을 참고로 했습니다.
벨을 치는 것 - 2 터치 입력 - (It's fine today!)
나중에 검색하면 이런 것도있었습니다.
【무사시노 전파의 프로토타이퍼즈】피포파음을 해독하는 DTMF 디코더를 만들어 포켓벨 치기에 도전!
덧붙여 테이블의 오른쪽 부분이 다른 것도 있었습니다.
오봉 휴가. . . 4 - 우메짱의 쇼~도 없는 매일♪
DoCoMo와 그 외(텔레메시지계)의 회사에서 다른 것이 아닐까 생각됩니다만, 이번 Pokebell gem 로 거론한 변환 테이블이 어느 것인가는 불명합니다 (아마 DoCoMo 겠지만).
변환 테이블 부분
어쨌든 일부는 해시 테이블이되었습니다.
class Pokebell
def encode(code)
code2pokebell_hash = {
166 => "02", # を
63 => "67", # ?
33 => "68", # !
45 => "69", # −
304 => "69", # ー
47 => "60", # /
92 => "76", # ¥
38 => "77", # &
40 => "82", # (
41 => "84", # )
42 => "86", # *
35 => "87", # #
32 => "88", # 全角スペース
350 => "04", # ゛
351 => "05", # ゜
}
case code
when 167..171 # ぁ-ぉ
code = code + 10
when 172..174 # ゃ-ょ
code = code + 40
when 175 # っ
code = code + 19
when 97..122 # a-z
code = code - 32
end
case code
when 177..211 # あ-も
digit(code, 177, 1, 1)
when 215..220 # ら-わ
digit(code, 215, 9, 1)
when 221..223 # ん゛゜
digit(code, 220, 0, 2)
when 212..214 # や-よ
second_digit, first_digit = (code - 212).divmod(3)
"#{(second_digit + 8) % 10}#{first_digit * 2 + 1}"
when 65..90 # A-Z
digit(code, 65, 1, 6)
when 49..57 # 1-9
digit(code, 49, 9, 6)
when 48 # 0
"00"
when *code2pokebell_hash.keys
code2pokebell_hash[code]
else
raise "out of aiming charactor area"
end
end
def digit(code, base, first_digit_base, second_digit_base)
second_digit, first_digit = (code - base).divmod(5)
"#{(second_digit + first_digit_base) % 10}#{(first_digit + second_digit_base) % 10}"
end
end
TODO
어쨌든 일부는 해시 테이블이되었습니다.
class Pokebell
def encode(code)
code2pokebell_hash = {
166 => "02", # を
63 => "67", # ?
33 => "68", # !
45 => "69", # −
304 => "69", # ー
47 => "60", # /
92 => "76", # ¥
38 => "77", # &
40 => "82", # (
41 => "84", # )
42 => "86", # *
35 => "87", # #
32 => "88", # 全角スペース
350 => "04", # ゛
351 => "05", # ゜
}
case code
when 167..171 # ぁ-ぉ
code = code + 10
when 172..174 # ゃ-ょ
code = code + 40
when 175 # っ
code = code + 19
when 97..122 # a-z
code = code - 32
end
case code
when 177..211 # あ-も
digit(code, 177, 1, 1)
when 215..220 # ら-わ
digit(code, 215, 9, 1)
when 221..223 # ん゛゜
digit(code, 220, 0, 2)
when 212..214 # や-よ
second_digit, first_digit = (code - 212).divmod(3)
"#{(second_digit + 8) % 10}#{first_digit * 2 + 1}"
when 65..90 # A-Z
digit(code, 65, 1, 6)
when 49..57 # 1-9
digit(code, 49, 9, 6)
when 48 # 0
"00"
when *code2pokebell_hash.keys
code2pokebell_hash[code]
else
raise "out of aiming charactor area"
end
end
def digit(code, base, first_digit_base, second_digit_base)
second_digit, first_digit = (code - base).divmod(5)
"#{(second_digit + first_digit_base) % 10}#{(first_digit + second_digit_base) % 10}"
end
end
TODO
rubygems를 만드는 방법
Jeweler로 만든 Gem을 Github와 Rubygems에 등록 - Qiita
Reference
이 문제에 관하여(읽기를 포켓벨 입력 숫자로 변환 Pokebell gem), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/riocampos/items/df546cb59eee2e91e839
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(읽기를 포켓벨 입력 숫자로 변환 Pokebell gem), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/riocampos/items/df546cb59eee2e91e839텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)