问题标签 [bitconverter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
177129 浏览

c# - 从十六进制转换为字符串

我需要检查一个string位于我作为byte数组接收的数据包中的一个。如果我使用BitConverter.ToString(),我会像破折号一样得到字节string(fe:00-50-25-40-A5-FF)。
我尝试了快速谷歌搜索后发现的大多数函数,但它们中的大多数都有输入参数类型string,如果我string用破折号调用它们,它会引发异常。

我需要一个将十六进制(asstring或 as byte)转换为string表示十六进制值(fe:0x31 = 1)的函数。如果输入参数是string,函数应该识别破折号(例如“47-61-74-65-77-61-79-53-65-72-76-65-72”),因为BitConverter不能正确转换。

0 投票
5 回答
7182 浏览

c# - 将 2 字节整数写入流?

我正在尝试通过使用简单协议的网络与应用程序进行交互。我必须发送一个看起来像这样的标题:

2 字节= 数据长度(包括请求类型)
1 字节= 请求类型

我将两个参数都作为整数:

我这样称呼它:

调用此方法或通过套接字发送时,我没有收到任何异常outBuf,但网络应用程序从不响应。不过,我可以用其他程序查询它,所以我相当肯定这是因为我的标题没有正确写入。

写值时我做错了吗?

编辑:添加 MemoryStream 代码

0 投票
2 回答
860 浏览

c# - 如何将 RectangleF 反转为 Picasa 面部哈希

以下是 Picasa 存储为哈希的详细信息。它像这样存储它们:

网上的信息是这样说的:

rect64() 中包含的数字是一个 64 位的十六进制数。

  • 将其分解为四个 16 位数字。
  • 将每个数字除以最大无符号 16 位数 (65535),您将有四个介于 0 和 1 之间的数字。
  • 剩下的四个数字为您提供面部矩形的相对坐标:(左、上、右、下)。
  • 如果要以绝对坐标结束,请将左右乘以图像宽度,将顶部和底部乘以图像高度。

所以我的代码把它变成一个 RectangleF 工作得很好(只保持相对坐标):

现在我有一个 RectangleF,我想把它变成上面提到的散列。我似乎无法弄清楚这一点。看起来 picasa 使用 2 个字节,包括精度,但是 C# 中的浮点数是 8 个字节,甚至 BitConverter.ToSingle 也是 4 个字节。

任何帮助表示赞赏。

编辑:这是我现在拥有的

0 投票
5 回答
2085 浏览

c# - 对于不是从 0 开始的缓冲区,是否有一种不那么痛苦的 GetBytes 方法?

我不得不处理项目中的原始字节,我基本上需要做这样的事情

我觉得这是非常错误的,但我找不到更好的方法。有没有更简单的方法?

0 投票
2 回答
3071 浏览

c# - BitConverter.ToInt32 的替代品

我用来将 3 个值BitConverter.ToInt32打包到一个中,如下所示:byteint

有没有一种更快的方法来做到这一点,而不是int每次都创建一个新的?从 an 中获取字节int很容易:

有没有一种简单的方法来扭转这个过程并使用位移将 RGB 字节写回现有的 RGB 字节int

0 投票
2 回答
1218 浏览

c# - 位对流器:从字符串中获取字节数组

当我有一个像“0xd8 0xff 0xe0”这样的字符串时,我会

但是如果我得到像“0xd8ffe0”这样的字符串,我不知道该怎么办?

我也可以建议如何将字节数组写为一个字符串。

0 投票
1 回答
1387 浏览

c# - “int msgLength = BitConverter.ToInt32(gzBuffer, 0);”处的索引超出范围

我目前正在开发一些用 C# XNA 制作的游戏。由于我需要通过网络发送大量数据(大约 96kb),因此我使用了一些字符串压缩器/解压缩器代码,这是我在互联网上找到的。代码如下所示:

它的工作原理如下: - 服务器使用字符串压缩器压缩字符串,然后将其发送到客户端。- 客户端收到压缩后的字符串,解压后可用。

现在奇怪的是,代码在我单独测试游戏时有效,这意味着我在同一台机器上运行服务器和客户端。当我和我的朋友一起测试时,它也可以工作,他托管服务器,我连接。但是当我托管服务器并且他连接时,它对我的​​朋友不起作用。当他连接到我的服务器时,他在“int msgLength = BitConverter.ToInt32(gzBuffer, 0);”处收到“索引超出范围”。 有时他很幸运并进入,但大多数情况下它失败并返回该错误。可能是服务器没有发送整个字符串吗?我正在使用 Lidgren gen3 进行网络发送,压缩字符串作为 netMsg.Write(compressedstring); 发送

有任何想法吗 :) ?谢谢!

0 投票
2 回答
1125 浏览

c# - 如何在 C#、A909 中获取 41104 的 ushort 数据?

我正在尝试将 int 值转换为 16 位无符号字符类型 (USHORT)。在一个示例中,41104 是 ushort 中的 A909,但在 C# 中我尝试使用代码示例作为(在 MSDN 文章BitConverter.GetBytes Yöntem (UInt16)的帮助下):

如何将 A909 值作为 41104 的 ushort?

0 投票
1 回答
444 浏览

c# - 帮助BitConverter!

我无法让 BitConverter 类工作。我收到错误“BitConverter”未声明(首先使用此函数)。我试过把'使用系统;' 在我的代码顶部,因为我在网上的一些示例中看到了这一点,但它告诉我尚未声明“系统”。我错过了什么?#include 文件?

0 投票
2 回答
1586 浏览

c# - BitConverter.ToInt16 将 0xFFFF 添加到数字?(C#)

我在这里遇到了一个问题,这可能是我忽略的问题,但我不明白为什么会这样......

我遇到的问题是我正在使用位转换器从 2 字节数组中给我一个 Int16,但出于某种原因,每当我这样做时——我得到了我应该得到的数字,并添加了 0xFFFF号码的开头。

例子...

这将返回“CreationDate”为 0x3d67(正确),但 CreationTime 为 0xffffa388。

有人会碰巧知道为什么会发生这种情况,以及纠正这种情况的方法吗?