在 C# 中将 Byte 数组转换为类似 Int 的数组

发布于 2024-07-18 00:47:51 字数 214 浏览 6 评论 0原文

BitConverter.ToUInt16() 期望字节被反转,我猜这就是它们在内存中存储的方式。 但是,当它没有反转时,我该如何转换它,而不修改数组呢?

Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006

BitConverter.ToUInt16() expects the bytes to be reversed, i guess that's how they are stored in memory. But how can I convert it when it's not reversed, w/o modifying the array?

Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

没有伤那来痛 2024-07-25 00:47:51

听起来你想要我的 EndianBitConverter 位于 MiscUtil ,它允许您指定是否要使用大字节序还是小字节序。

基本上它提供与 BitConverter 相同的功能,但作为实例方法。 然后,您可以获得适当类型的 EndianBitConverter 并用它执行您想要的操作。

(它提供了更多的功能来有效地处理数组,这对您可能有用也可能没用。)

该库是在相当宽松的许可下开源的。

It sounds like you want my EndianBitConverter in MiscUtil, which lets you specify whether you want to use big or little endianness.

Basically it provides the same functionality as BitConverter but as instance methods. You then get the appropriate kind of EndianBitConverter and do what you want with it.

(It provides a bit more functionality for working efficiently with arrays, which may or may not be useful to you.)

The library is open sourced under a fairly permissive licence.

云朵有点甜 2024-07-25 00:47:51

您还可以使用 IPAddress.HostToNetworkOrder。

You can also use IPAddress.HostToNetworkOrder.

等风来 2024-07-25 00:47:51

我认为你最好的选择是使用 Array.Reverse 方法反转数组。

http://msdn.microsoft.com /en-us/library/system.array.reverse(VS.71).aspx

I think your best call would be to reverse the array with Array.Reverse method.

http://msdn.microsoft.com/en-us/library/system.array.reverse(VS.71).aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文