使用BitConverter.GetBytes转换double到byte[]中,得到的数据怎么理解

本文探讨了在C#中使用BitConverter.GetBytes将用户输入的double转换为byte[]时遇到的问题,包括如何确定正确的数组大小以及转换结果与预期不符的原因。通过分析double的内部表示,得出结论应使用Int64来正确实现目标。
摘要由CSDN通过智能技术生成

一.获得用户输入的密钥

我这里的讨论使用的平台C# 。
我原本的目的是为了对一组byte[]进行简单的异或加密,而密钥就是从用户输入而来。那么通过何种控件何种方式获得用户的输入呢?

1.方式一,Textbox

第一种就是直接使用Textbox接收用户输入的string,然后使用Encoding的GetBytes[]方法获得byte[]密钥数组。这种的优点是很直观,缺点是用户并不知道最终的密钥Byte[]的内容是什么;

2.方式二,NumericUpAndDown

对应的第二种方式就是,让用户直接输入byte[],那么可以使用数字控件,并且将属性Hex打开,那么用户的输入就会是16进制,然后我们只要将16进制数转换为byte[]就好了,使用的就是BitConverter.GetBytes函数。这里有个问题:

1).密钥byte[]的数组大小问题

众所周知,BitConverter.GetBytes获得的数组大小与填入的参数是什么类型有关。如果是对int GetBytes(),那么数组大小就是4,因为int就是4字节;如果对short ,当然就是2喽。所以问题来了。当用户比如输入了F时,我们如何得知用户想要的密钥数组大小是多少?
解决办法当然是,直接判断数据的极值,比如F明显是一个字节可以搞定的,那么数组大小就是1,7FFF数组大小就是short可以搞定的,那么(short st = (short)NumericUpAndDown

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值