-
Ruby中有没有类库能在字节码和数字之间转换?10
考虑到整数、小数;考虑到big-endian和little-endian等编码方式。
比如一个字节码0X00010011,big-endian编码,如果它表示一个float,对应的值是多少呢?
在Java里面可以用Float.intBitsToFloat(0x00010011),ruby里面有相应的api或者类库吗?2009年2月16日 13:30
2个答案 按时间排序 按投票排序
-
采纳的答案
Array#pack 将一个数组变成字节码序列
String#unpack 将字节码序列转变成数组
[56, 12.34, "hello"].pack 'IFA5' # => "8\x00\x00\x00\xA4pEAhello" "8\x00\x00\x00\xA4pEAhello".unpack 'IFA5' # => [56, 12.34, "hello"]
查看具体参数意义ri Array.pack
以下在Ruby 1.9才可用
String#encoding 查看现在的编码方式
String#force_encoding 设定字符串的编码方式,不改变字符串内容
String#encode 返回改变了编码方式的字符串
String#encode! 同上,改变自身
Encoding.default_external # => #<Encoding:GB2312> str = '一段字' str.encoding # => #<Encoding:GB2312> str.force_encoding 'utf-8' # => "一\xB6\xCE\xD7\xD6" puts str # => '一段字' str.encode! 'utf-16be' # => "N\x00k\xB5[W" puts str # => ArgumentError: ASCII incompatible string written for text mode IO without encoding conversion: UTF-16BE # puts不支持含有"\0"的字符串输出
rb文件头加上#encoding=utf-8
则文件中的字符串的初始encoding都是utf-82009年2月16日 17:58
-
再举例:
一个字节码文件num,内容为:(16进制)
00010011
读入并解释:
[code=ruby]
content = File.read 'num','rb'
# => "\x00\x01\x00\x11"
puts content.unpack('F')[0]
# => 1.00977277356201e-28
content.force_encoding 'utf-16be'
puts content.encode 'gbk'
# =>
2009年2月16日 18:25
相关推荐
JRuby的实现方式是将Ruby源代码转换为Java字节码,然后在JVM上执行。这种转换过程涉及到词法分析、语法解析、抽象语法树(AST)构建以及最终的字节码生成。JRuby还支持Just-In-Time(JIT)编译,这意味着频繁执行的...
Ruby2Java项目则更进一步,它尝试直接将Ruby源代码转换为Java字节码,从而避免了JRuby中的解释阶段,理论上可以提升运行速度。这种编译方式让Ruby程序能够像Java应用一样被预编译,减少运行时的解析开销。 在项目源...
### 程序编译与解释的关键知识点 #### 一、程序翻译的必要性 - **背景介绍**:计算机只能直接识别和执行机器语言(即由0和1组成的...- Java语言通过编译成字节码再解释执行的方式,实现了良好的跨平台兼容性和高效性。
5. **GroovyScriptEngine**:在Java应用程序中,可以使用这个引擎来执行Groovy脚本,实现Java和Groovy之间的交互。 6. ** Grape**:Grape是Groovy的依赖管理工具,类似于Java的Maven或Gradle,它可以自动下载并管理...
- **跨平台示例**: 在Windows下编写的Java程序,其字节码文件可以直接在Linux、Mac OS等操作系统上运行,只需要在这些操作系统上安装对应的JRE即可。 #### 三、Java编译器与Java虚拟机的关系 - **编译器**: JDK中...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Groovy编译器将Groovy源码转换为Java字节码,因此Groovy程序可以在任何支持Java的环境中运行。通过反编译Groovy生成的字节码,可以深入了解Groovy如何实现其动态特性。 "工具"标签可能指的是Groovy提供的各种实用...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
通常,博主可能会探讨JRuby如何通过JRUBY-CONF IR(JRuby编译器中间表示)将Ruby代码转换为Java字节码,使得其能够在JVM上高效执行。同时,也可能会讨论JRuby与其他Ruby实现(如Rubinius或TruffleRuby)的对比,以及...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...