我想我的主要问题是,只要我不重新初始化(新字节[#])作为参数传递的数组,它会一直工作吗?我不确定C#如何处理内存中的数组。直到大约一个小时之前,我甚至都不知道它们是被管理的类型。我只是想知道如果我传递一个小数点作为byte [],它会始终返回正确的值吗?任何其他信息,你可以提供赞赏。C#数组如何存储在内存中
回答
后@ MJLaukala的澄清过评论:
在.NET中数组是连续的内存,就像任何其他语言的块。但与C/C++不同的是,该块不仅存储数组的元素,还存储其他“信息”,包括数组的排名和长度。话虽如此,& ba [0]将返回指向数组的第一个元素的指针,并且可以安全地增加指针直到最后一个元素。 ba.Length将提供数组中的元素数目。
现在,如果您确定字节数组完全代表小数,那么您的代码将正常工作。小数的
内存布局(128位):
前2个字节是0
第三字节包含0和28之间的值,表示10的幂来划分96位由整数部分以产生十进制值
第四字节:第一7位均为零,第八位表示的十进制(1含义负)
接下来的12字节的符号:整数部分的小数。
非常感谢您的澄清!这是我绝对不会忘记的信息。 – MJLaukala
为什么不能只是'struct Decimal {long integer;长分数; }'并用'integer.fractional'表示? '42.13'会是'{integer = 42;小数= 13}'。 –
这是一个经典的'为什么浮点表示优于定点表示'的问题。你的符号是一个最大值为10^18的定点符号(检查长的最大值)。浮点表示(如小数点)允许更大的范围。小数的最大值为10^29的数量级。 –
- 1. 数组如何存储在内存中?
- 2. 如何让数组存储在Objective C中的数组内?
- 3. 如何在C++数组中存储SDL_Color?
- 4. 整数如何存储在内存中?
- 5. Javascript - 数组如何在内部存储?
- 6. 在类中存储内存内容 - C++
- 7. 三维数组如何存储在内存中?
- 8. 2维数组如何存储在内存中?
- 9. 对象数组如何存储在内存中?
- 10. 数组如何在内存中存储和删除?
- 11. 如何在数组内存储十六进制数? C++ MFC
- 12. C++如何在内存中存储函数和对象?
- 13. C如何在内存中存储不同的数据类型?
- 14. 如何连续(连贯地)在C++内存中存储三维数组?
- 15. Python:如何在Google App Engine数据存储中存储数组
- 16. 如何存储公钥为C数组
- 17. 如何在内存中的存储库
- 18. 矩阵如何存储在内存中?
- 19. 结构如何存储在内存中?
- 20. 标识如何存储在内存中?
- 21. IEnumerable如何在c#中的内存中存储?
- 22. C#中的对象如何存储在内存中?
- 23. 无法在c + +中存储数组值
- 24. C#在字节数组中存储int
- 25. 数组存储在C中的位置?
- 26. 如何在本地存储中存储对象数组?
- 27. 将数组内存中的数组存储到PHP变量中
- 28. angularjs - 如何在sessionStorage中存储数组?
- 29. 如何在PHP中存储PHP数组?
- 30. 如何在SQLite中存储Xamarin.Forms.Point数组?
另外,在函数的开头创建一个小数,然后在固定块中,使它等于((decimal *)byte_PTR指向的值),然后返回创建的小数? – MJLaukala
我可以知道如何获取字节[] ?.答案取决于这些信息。 –
byte []是使用NetworkStream.Read(byte [] buffer,int offset,int size)通过网络连接发送的消息的一部分。上面的示例方法与实现略有不同,但传递给该方法的数组与传递给NetworkStream.Read的数组是相同的。这是一个仅限Windows的程序,所以我确实相信我不需要担心字节序。 – MJLaukala