本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。