本文簡要介紹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_errinfo
和last_error
方法返回錯誤的詳細信息。 -
源緩衝區意外結束 (:incomplete_input) 僅在未指定 :partial_input 時才會發生。
primitive_errinfo
和last_error
方法返回錯誤的詳細信息。 -
輸出編碼中無法表示的字符 (:undefined_conversion)
primitive_errinfo
和last_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 Converter.primitive_errinfo用法及代碼示例
- Ruby Converter.putback用法及代碼示例
- Ruby Converter.convert用法及代碼示例
- Ruby Converter.inspect用法及代碼示例
- Ruby Converter.insert_output用法及代碼示例
- Ruby Converter.search_convpath用法及代碼示例
- Ruby Converter.last_error用法及代碼示例
- Ruby Converter.replacement用法及代碼示例
- Ruby Converter.replacement =用法及代碼示例
- Ruby Converter.new用法及代碼示例
- Ruby Converter.finish用法及代碼示例
- Ruby Converter.convpath用法及代碼示例
- Ruby Converter.asciicompat_encoding用法及代碼示例
- Ruby Context.save_history=用法及代碼示例
- Ruby Constants模塊用法及代碼示例
- Ruby Continuation類用法及代碼示例
- Ruby Context.echo_on_assignment?用法及代碼示例
- Ruby Config.get_value用法及代碼示例
- Ruby Context.echo?用法及代碼示例
- Ruby Context.echo_on_assignment用法及代碼示例
- Ruby Config.to_s用法及代碼示例
- Ruby Constructive類用法及代碼示例
- Ruby Constructive.each用法及代碼示例
- Ruby Context.auto_indent_mode用法及代碼示例
- Ruby ConditionVariable類用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Converter.primitive_convert。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。