gpt4 book ai didi

c# - 如果数组恰好是 16 个字节并且取自成功接收的 UDP 套接字,那么 new Guid(byte[]) 是否总是会生成有效的 guid?

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:45 25 4
gpt4 key购买 nike

试图将我的头脑围绕在 Socket.ReceiveFrom(Byte[], EndPoint) 产生的字节数组上后来用于 Guid Constructor (Byte[]) .

var data = new byte[16];
var length = socket.ReceiveFrom(data, ref remoteEndpoint);
if(length == 16)
var guid = new Guid(data);

是否可以安全地假设如果 socket.ReceiveFrom(...) 没有产生异常,new Guid(data) 将永远不会失败?基本上,ReceiveFrom 是否有可能在不抛出异常的情况下生成无法制成 guid 的字节数组?还是必须先验证接收到的字节数组?

最佳答案

这与数据的来源无关。 Guid 应该如何知道数据来自套接字?

任何字节都是有效的 Guid,至少关于 Guid 使用的验证规则。此代码永远不会抛出:

if(length == 16)
var guid = new Guid(data);

Guids 确实有一些结构,根据我相信的一些 Guid 标准,但代码几乎从未使用过该结构。它没有实际影响。我不知道有哪个系统会在结构不良的 guid 下出现异常行为。

关于c# - 如果数组恰好是 16 个字节并且取自成功接收的 UDP 套接字,那么 new Guid(byte[]) 是否总是会生成有效的 guid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com