Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Smalltalk VisualWorks 7.9.1中将开放式声控ByteArray转换为字符串_String_Bytearray_Smalltalk_Osc_Visualworks - Fatal编程技术网

String 在Smalltalk VisualWorks 7.9.1中将开放式声控ByteArray转换为字符串

String 在Smalltalk VisualWorks 7.9.1中将开放式声控ByteArray转换为字符串,string,bytearray,smalltalk,osc,visualworks,String,Bytearray,Smalltalk,Osc,Visualworks,我正在从服务器接收UDP数据包(确切地说:打开声音控制数据包)。我把那些包放在一个小仓库里 我想把这个ByteArray转换成字符串,这样我就可以利用接收到的数据。我尝试了很多转换,但每次都有不可读的字符 代码如下: | server peerAddr | server := SocketAccessor newUDPserverAtPort: 3333. peerAddr := IPSocketAddress new. buffer := ByteArray new: 1024. [ serv

我正在从服务器接收UDP数据包(确切地说:打开声音控制数据包)。我把那些包放在一个小仓库里

我想把这个ByteArray转换成字符串,这样我就可以利用接收到的数据。我尝试了很多转换,但每次都有不可读的字符

代码如下:

| server peerAddr |
server := SocketAccessor newUDPserverAtPort: 3333.
peerAddr := IPSocketAddress new.
buffer := ByteArray new: 1024.
[ server readWait.
server receiveFrom: peerAddr buffer: buffer.

Transcript show: (buffer asString) ; cr ; flush. ] repeat.
我还尝试了以下转换,但没有成功:

buffer asByteString.
buffer asStringEncoding:#UTF8.
buffer asStringEncoding:#UTF16.
buffer  asString.
buffer  asBase64String.
buffer  asFourByteString
buffer withEncoding: #ASCII
以下是字符串输出:

有什么帮助吗

附加信息:接收到的数据是开放的声控数据,因此它具有特定的格式,这就是为什么它是这样显示的,我需要在特定的字节数组索引中解析int、float、string等。有人推荐提供这些可能性的软件和软件包吗


Thx。如果要从字节数组中读取数据,请使用UnterpretedBytes类

你可以做:

ubytes:=来自aByteArray的未预料到的数据字节。 双字节:5

诸如此类。
您还可以使用未解释的字节从字节中读取字符串。

将字节转换为字符串的正确方法肯定是应用正确的字符编码。以下

(65 to: 75) asByteArray asStringEncoding: #UTF8
应该让步

'ABCDEFGHIJK'

使用#asStringEncoding:是正确的方法。然而,从您的屏幕截图来看,您接收的字节似乎不是一个直字符串。可能有一些二进制数据包格式需要先分解,然后只解码成字符串,这些部分实际上是utf8编码的(或任何编码)。

您可能可以借用Squeak的OSC包的很多代码:

如果您检查接收到的ByteArray和每个字节,是否有任何ASCII字符代码点?比如64美元一个asInteger等等。试着找出接收字符串的编码方式。事实上,received bytearray不仅仅包含字符串,我在问题中添加了一些intel。是的,这就是我想要做的,但在squeak中,有很多不同的包在visual works中不存在。特别是处理字节流和转换类型。您以前发现过任何visualworks实现吗?因为它解决了所有问题。Siren应该也支持OSC,VWOSC:好的,我已经有了Siren和VWOSC,代码只用于发送OSC数据包,在我的情况下,我是接收者。大众OSC的来源在。sit扩展我想它是为Mac设计的,我正在用Aladdin Expander查看它,但无论如何我会继续搜索,如果你有任何新的想法,我将非常感激。非常感谢。