0 0

Ruby中有没有类库能在字节码和数字之间转换?10

考虑到整数、小数;考虑到big-endian和little-endian等编码方式。
比如一个字节码0X00010011,big-endian编码,如果它表示一个float,对应的值是多少呢?
在Java里面可以用Float.intBitsToFloat(0x00010011),ruby里面有相应的api或者类库吗?
2009年2月16日 13:30

2个答案 按时间排序 按投票排序

0 0

采纳的答案

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-8

2009年2月16日 17:58
0 0

再举例:

一个字节码文件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

相关推荐

    Ruby-JRuby一个Ruby语言的Java实现

    JRuby的实现方式是将Ruby源代码转换为Java字节码,然后在JVM上执行。这种转换过程涉及到词法分析、语法解析、抽象语法树(AST)构建以及最终的字节码生成。JRuby还支持Just-In-Time(JIT)编译,这意味着频繁执行的...

    ruby2java:查尔斯·纳特(Charles Nutter)的JRuby项目的分支,该项目从Ruby源代码构建Java .class文件-java project source code

    Ruby2Java项目则更进一步,它尝试直接将Ruby源代码转换为Java字节码,从而避免了JRuby中的解释阶段,理论上可以提升运行速度。这种编译方式让Ruby程序能够像Java应用一样被预编译,减少运行时的解析开销。 在项目源...

    程序编译与解释.pdf

    ### 程序编译与解释的关键知识点 #### 一、程序翻译的必要性 - **背景介绍**:计算机只能直接识别和执行机器语言(即由0和1组成的...- Java语言通过编译成字节码再解释执行的方式,实现了良好的跨平台兼容性和高效性。

    GroovyBinary

    5. **GroovyScriptEngine**:在Java应用程序中,可以使用这个引擎来执行Groovy脚本,实现Java和Groovy之间的交互。 6. ** Grape**:Grape是Groovy的依赖管理工具,类似于Java的Maven或Gradle,它可以自动下载并管理...

    java问题详解

    - **跨平台示例**: 在Windows下编写的Java程序,其字节码文件可以直接在Linux、Mac OS等操作系统上运行,只需要在这些操作系统上安装对应的JRE即可。 #### 三、Java编译器与Java虚拟机的关系 - **编译器**: JDK中...

    java开源包1

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    groovy学习

    Groovy编译器将Groovy源码转换为Java字节码,因此Groovy程序可以在任何支持Java的环境中运行。通过反编译Groovy生成的字节码,可以深入了解Groovy如何实现其动态特性。 "工具"标签可能指的是Groovy提供的各种实用...

    java开源包11

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包2

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包3

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包6

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包5

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包10

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包4

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包8

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包7

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包9

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    走近JRuby

    通常,博主可能会探讨JRuby如何通过JRUBY-CONF IR(JRuby编译器中间表示)将Ruby代码转换为Java字节码,使得其能够在JVM上高效执行。同时,也可能会讨论JRuby与其他Ruby实现(如Rubinius或TruffleRuby)的对比,以及...

    java开源包101

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    Java资源包01

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

Global site tag (gtag.js) - Google Analytics