OSC Specification, version 1.0将“int32”数据类型指定为“32位大端二进制补码整数”。这意味着它已签名(否则,为什么你会写“二补”......),但它并没有说出来。
这在blob的编码中最为明显:拥有一个长度为#x90000000的blob是否合法?此数字可以编码为无符号32位整数,但不能编码为带符号的32位整数。我授予你,这是一个非常大的blob(超过2千兆字节)。
答案 0 :(得分:1)
规范不再为您提供详细信息。我检查了我使用的C ++ osc实现的代码,它被定义为:
typedef signed long int32;
blob定义为:
struct Blob{
Blob() {}
explicit Blob( const void* data_, unsigned long size_ )
: data( data_ ), size( size_ ) {}
const void* data;
unsigned long size;
};
是的,它是" atomic"的有符号整数。 int32类型。
另一方面,blob的大小存储为unsigned long。所以它可能更大。您可能必须先尝试一下,因为我这里只有osc包的实现。