首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Smalltalk VisualWorks 7.9.1中转换

在Smalltalk VisualWorks 7.9.1中转换
EN

Stack Overflow用户
提问于 2013-03-10 02:31:20
回答 3查看 383关注 0票数 2

我需要将ByteString转换为Float32 (确切地说是32位大端IEEE754浮点数)。ByteString是通过UDP客户端接收的开放声音控制流的一部分。我花了很多时间研究,所以我希望Smalltalk的得力助手能给我一个解决方案。

谢谢,提前说好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-12 03:02:26

由于您接收的似乎是二进制数据,而不是ASCII码格式的十进制数,所以我不建议将其称为ByteString,而是ByteArray,String是用于包含字符而不是位的抽象。

在使用VisualWorks的情况下,有一个名为UninterpretedBytes的类专门用于存储原始数据(比特或字节)以供稍后解释。这个类包含解释字节所需的所有消息,例如#floatAt:bigEndian

代码语言:javascript
复制
| yourBinaryStream buffer |
yourBinaryStream := ... insert some code to create your stream here...
buffer:= UninterpretedBytes from: (yourBinaryStream next: 4).
nextFloat := buffer floatAt: 1 bigEndian: true
票数 2
EN

Stack Overflow用户

发布于 2013-03-11 00:09:19

在Pharo Smalltalk中,您可以执行以下操作:

代码语言:javascript
复制
   (Float readFrom: '4.2') asIEEE32BitWord

readFrom:只需从字符串中读取浮点数,然后将其转换为IEEE754...

票数 0
EN

Stack Overflow用户

发布于 2013-03-11 23:13:57

在VisualWorks中,您需要使用在类Number中实现的超类方法readFrom:。首先在字符串上创建一个readstream,例如:

代码语言:javascript
复制
Number readFrom: '192843.887' readStream
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15314373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档