當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby Converter.primitive_convert用法及代碼示例

本文簡要介紹ruby語言中 Encoding::Converter.primitive_convert 的用法。

用法

primitive_convert(source_buffer, destination_buffer) → symbol
primitive_convert(source_buffer, destination_buffer, destination_byteoffset) → symbol
primitive_convert(source_buffer, destination_buffer, destination_byteoffset, destination_bytesize) → symbol
primitive_convert(source_buffer, destination_buffer, destination_byteoffset, destination_bytesize, opt) → symbol

可能的選擇元素:

hash form:
  :partial_input => true           # source buffer may be part of larger source
  :after_output => true            # stop conversion after output before input
integer form:
  Encoding::Converter::PARTIAL_INPUT
  Encoding::Converter::AFTER_OUTPUT

可能的結果:

:invalid_byte_sequence
:incomplete_input
:undefined_conversion
:after_output
:destination_buffer_full
:source_buffer_empty
:finished

primitive_convert 將 source_buffer 轉換為 destination_buffer。

source_buffer 應該是一個字符串或零。 nil 表示一個空字符串。

destination_buffer 應該是一個字符串。

destination_byteoffset 應該是整數或零。 nil 表示destination_buffer 的結束。如果省略,則假定為 nil。

destination_bytesize 應該是整數或零。 nil 表示無限。如果省略,則假定為 nil。

opt 應為 nil、散列或整數。 nil 表示沒有標誌。如果省略,則假定為 nil。

primitive_convert 從頭開始轉換source_buffer的內容並將結果存儲到destination_buffer中。

destination_byteoffset和destination_bytesize指定存儲轉換結果的區域。 destination_byteoffset 以字節為單位指定 destination_buffer 中的起始位置。如果destination_byteoffset 為nil,則destination_buffer.bytesize 用於追加結果。 destination_bytesize 指定最大字節數。如果destination_bytesize 為 nil,則目標大小不受限製。轉換後,destination_buffer 被調整為 destination_byteoffset + 實際產生的字節數。 destination_buffer 的編碼也設置為 destination_encoding。

primitive_convert 丟棄source_buffer 的轉換部分。丟棄的部分在destination_buffer 中轉換或在 Encoding::Converter 對象中緩衝。

primitive_convert 在滿足以下條件之一時停止轉換。

  • 在源緩衝區中找到無效字節序列 (:invalid_byte_sequence) primitive_errinfolast_error 方法返回錯誤的詳細信息。

  • 源緩衝區意外結束 (:incomplete_input) 僅在未指定 :partial_input 時才會發生。 primitive_errinfolast_error 方法返回錯誤的詳細信息。

  • 輸出編碼中無法表示的字符 (:undefined_conversion) primitive_errinfolast_error 方法返回錯誤的詳細信息。

  • 在生成一些輸出之後,在輸入完成之前(:after_output),這僅在指定:after_output 時發生。

  • 目標緩衝區已滿 (:destination_buffer_full) 僅當 destination_bytesize 不為零時才會發生這種情況。

  • 源緩衝區為空 (:source_buffer_empty) 僅在指定:partial_input 時才會發生這種情況。

  • 轉換完成 (:finished)

例子:

ec = Encoding::Converter.new("UTF-8", "UTF-16BE")
ret = ec.primitive_convert(src="pi", dst="", nil, 100)
p [ret, src, dst] #=> [:finished, "", "\x00p\x00i"]

ec = Encoding::Converter.new("UTF-8", "UTF-16BE")
ret = ec.primitive_convert(src="pi", dst="", nil, 1)
p [ret, src, dst] #=> [:destination_buffer_full, "i", "\x00"]
ret = ec.primitive_convert(src, dst="", nil, 1)
p [ret, src, dst] #=> [:destination_buffer_full, "", "p"]
ret = ec.primitive_convert(src, dst="", nil, 1)
p [ret, src, dst] #=> [:destination_buffer_full, "", "\x00"]
ret = ec.primitive_convert(src, dst="", nil, 1)
p [ret, src, dst] #=> [:finished, "", "i"]

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Converter.primitive_convert。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。