将大于255的数字转换为字节变量

时间:2011-05-17 21:51:07

标签: vb.net arrays byte

我理解字节和声明变量的概念以节省处理空间。我知道可以存储在一个字节中的最大值是255.

我似乎无法解决当前的问题,并希望有人能够教育我并帮助我解决这个问题。我没有太多使用字节操作的经验。

我得到了一个更新的项目,并被告知将数据传递到我的项目的服务将开始使用2字节来传输ID而不是之前的1字节,因为它们的参数已经增长。

变量的当前声明是:

Dim bytvariable As Byte = 0

接受2字节值的新声明是什么?

其次,我怎样才能将该2字节值转换为整数?

例如,他们传给我这个值:0x138,它应该是312。

提前谢谢。

3 个答案:

答案 0 :(得分:2)

Here's a summary .NET中的“原始”数据类型及其大小。

是的,Int16可能就是你想要的。

通常,您将从流中读取二进制数据,或者从字节数组中获取二进制数据。 要将这些来源转换为Int16,您可以这样做:

在C#中

byte[] block = new byte[128];
mystream.Read(block, 0, block.Length);
int i = 0;
Int16 value = (Int16)(block[i++] + block[i++] * 256);

在VB.NET中,它将是:

Dim block as New Byte(128)
stream.Read(block, 0, block.Length)
Dim i as Int16 = 0
Dim value As Short = CShort((block(i) + (buffer(i+1) * &H100)))
i = i + 2

(我认为)

答案 1 :(得分:1)

从我的头顶我建议如果你坚持这样做(而不是只传递一个整数),你可以使用一个byte数组,第一个索引保存第一个数字,第二个索引保存第二个恩。 byte [0] = 123,byte [1] = 255;

然后将它们组合成一个字符串ex。 string concatenatedNumber = byte [0] .ToString()+ byte [1] .ToString();然后解析它。 int ID = Int32.Parse(concatenatedNumber);

示例在C#中,但我认为你应该明白这个想法。我绝对宁愿把它作为一个整数传递给它。

答案 2 :(得分:1)

你可以试试这个:

Dim bytvariable As Byte(0 To 1)

bytvariable(0) = ' Get the first byte however they are sending it
bytvariable(1) = ' Get the second byte however they are sending it
Dim value As Int16 = BitConverter.ToInt16(buffer, 0);