问题描述
如果我需要转换的 INT
到字节[]
所以我可以使用 BitConverter.GetBytes()
。但如果我应遵循这样的:
If I need to convert an int
to a byte[]
so I could use BitConverter.GetBytes()
. But if I should follow this:
有符号整数的XDR是一个32位数据的连接codeS中的一个整数 范围[-2147483648,2147483647]。该整数再presented在 二进制补码。最多和最少的显著字节 0和3,分别整数声明如下:
来源:RFC1014 3.2
Source: RFC1014 3.2
用什么方法,我应该用那么有没有办法做到这一点?它如何看,如果你写你自己的呢?
What method should I use then if there is no method to do this? How would it look like if you write your own?
我不明白的文字100%,所以我不能在我自己实现它。
I don't understand the text 100% so I can't implement it on my own.
推荐答案
该RFC只是想说,有符号整数是一个正常的4字节的整数,下令在大端方式字节。
The RFC is just trying to say that a signed integer is a normal 4-byte integer with bytes ordered in a big-endian way.
现在,你是最有可能工作一小端机器上 BitConverter.GetBytes()
会给你的字节[]
逆转。所以,你可以尝试:
Now, you are most probably working on a little-endian machine and BitConverter.GetBytes()
will give you the byte[]
reversed. So you could try:
int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
Array.Reverse(intBytes);
byte[] result = intBytes;
对于code是最轻便的,但是,你可以做到这一点是这样的:
For the code to be most portable, however, you can do it like this:
int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
if (BitConverter.IsLittleEndian)
Array.Reverse(intBytes);
byte[] result = intBytes;
这篇关于C#INT为byte []的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!