我正在尝试将值转换为字节数组。
例如,我有:
var b1 = BitConverter.GetBytes(0x85);
var b2 = BitConverter.GetBytes(12345);b1的值是:
{byte[4]}
[0]: 133
[1]: 0
[2]: 0
[3]: 0和b2
{byte[4]}
[0]: 57
[1]: 48
[2]: 0
[3]: 0为什么字节数组总是大小为4?是否可以返回正确的字节数(即。不包括尾随0)?
发布于 2016-10-06 09:07:06
四个字节是32位整数的正确字节数.如果您希望它被截断到表示一个数字所需的最小字节数,那么您必须自己去做。实际上,你所要寻找的应用程序很少。BitConverter用于获取某些基元类型的精确内存表示。有助于二进制文件格式或网络协议的东西。对于这些事情,您通常希望为结果获得相同的长度,这是基于传入的类型。
附带注意:您是否希望0产生一个空数组?那-1呢?是new byte [] { 255 }还是new byte [] { 255, 255, 255, 255 }?
发布于 2016-10-06 09:08:02
您正在传递一个具有32位的int。您可以传递一个short,然后得到2个字节:
var b1 = BitConverter.GetBytes((short)0x85);
var b2 = BitConverter.GetBytes((short)12345);https://stackoverflow.com/questions/39891887
复制相似问题