我有一个客户端和服务器之间的接口,客户端发送(1)一个无符号的值,(2)一个标志,指示值是否有符号/无符号。然后,服务器会将无符号值转换为适当的类型。安全地转换unsigned和signed int
我后来发现这是实现定义的行为,我一直在阅读它,但我似乎无法找到一个完全安全的合适解决方案?我读过关于类型双击,指针转换和memcpy。
只会使用联合类型的工作?包含signed和unsigned int的UnionType以及signed/unsigned标志。对于有符号值,客户端设置联合的签名部分,服务器读取签名部分。相同的未签名部分。还是我完全误解了一些东西?
问题:我怎么知道这种情况下针对特定场景的特定行为,例如,在PPC上的windriver diab?我在如何找到这样的文档方面有点遗憾。
除非您遇到使用类似补码或符号大小的系统,否则我认为您使用的所有内容都将以同样的方式定义unsigned-> signed转换。 – user2357112
当客户端发送一个无符号值但发送了签名标志时应该发生什么? –
你的代码如何处理签名标志? (因为C++有一个静态类型系统,你需要在编译时指定你的类型) –