Programing

Ruby에서 chr ()의 반대는 무엇입니까?

crosscheck 2020. 8. 24. 07:34
반응형

Ruby에서 chr ()의 반대는 무엇입니까?


많은 언어에는 숫자와 문자 값 사이를 변환하는 함수 chr()의 쌍이 ord()있습니다. 일부 언어에서는 ord()이라고 asc()합니다.

Ruby에는 Integer#chr, 이는 훌륭하게 작동합니다.

>> 65.chr
A

그럴 수 있지. 하지만 어떻게 다른 길로 가나 요?

"A".each_byte do |byte|
   puts byte
end

인쇄물:

65

그리고 그것은 내가 원하는 것에 매우 가깝습니다. 하지만 나는 루프를 피하는 편이 낫다 const. .NET을 선언 할 때 읽을 수있을만큼 짧은 것을 찾고있다 .


String # ord가 1.9에 존재하지 않았다면 2.0에 존재합니다.

"A".ord #=> 65

1.8 시리즈까지의 Ruby에서 다음은 모두 65 (ASCII의 경우)를 생성합니다.

puts ?A
'A'[0]

Ruby 1.9에서 동작이 변경되었으며, 위의 두 가지 모두 대신 "A"를 생성합니다. Ruby 1.9에서이를 수행하는 올바른 방법은 다음과 같습니다.

'A'[0].ord

불행히도이 ord메서드는 Ruby 1.8에 없습니다.


시험:

'A'.unpack('c')

dylanfm 및 AShelly의 댓글을 +1하고 싶지만 [0]을 추가합니다.

'A'.unpack('C')[0]

unpack 호출은 단일 정수를 포함하는 Array를 반환하며, 정수가 필요한 경우 항상 허용되지는 않습니다.

$ 루비 -e 'printf ( "0x % 02X \ n", "A".unpack ( "C"))'
-e : 1 : in`printf ': 배열을 정수로 변환 할 수 없습니다 (TypeError).
    -e : 1에서
$ 루비 -e 'printf ( "0x % 02X \ n", "A".unpack ( "C") [0])'
0x41
$ 

Ruby 1.8.1, 1.8.7 및 1.9.2에서 작동하는 코드를 작성하려고합니다.

unpack ( "c")는 나에게 -1을 제공하고 ord ()는 나에게 255를 제공하기 때문에 C를 전달하여 대문자로 풀도록 편집했습니다 (C의 문자가 서명 된 플랫폼에서 실행 중임에도 불구하고).


RFC를 통해 Stringprep의 순수한 Ruby 버전을 모으는 동안 이것을 발견했습니다.

chr[0,255] 외부 에서 실패 한다는 점에주의하십시오 . 대신 1.9.x-2.1.x 휴대용 대체품을 사용하십시오.

[22] pry(main)> "\u0221".ord.chr
RangeError: 545 out of char range
from (pry):2:in 'chr'
[23] pry(main)> x = "\u0221".unpack('U')[0]
=> 545
[24] pry(main)> [x].pack('U')
=> "ȡ"
[25] pry(main)>

또한 문자열에 문자가 있고 루프없이 디코딩하려는 경우 :

puts 'Az'[0]
=> 65
puts 'Az'[1]
=> 122

어때

? A


배열에서 값을 가져와도 괜찮다면 다음을 사용할 수 있습니다. "A".bytes


다음을 가질 수 있습니다.

65.chr.ord
'a'.ord.chr

1.8.6 및 1.9.3에 대한 코드를 작성 중이며 두 환경 모두에서 작동하는 이러한 솔루션을 얻을 수 없습니다.

그러나 다른 솔루션을 발견했습니다. http://smajnr.net/2009/12/ruby-1-8-nomethoderror-undefined-method-ord-for-string.html

그것은 나에게도 효과가 없었지만 내 용도에 맞게 조정했습니다.

unless "".respond_to?(:ord)
  class Fixnum
    def ord
      return self
    end
  end
end

그렇게하면 다음이 두 환경에서 모두 작동합니다.

'A'[0].ord

참고URL : https://stackoverflow.com/questions/308749/whats-the-opposite-of-chr-in-ruby

반응형