即使所接受的回答符合问题,但我认为,由于问题无所作为,而且并非只是头盔,而且在搜索结果方面令人误解,而正如我们所知,C#中的Int32有32个仲裁点,因此有4个仲裁方。 我将在此举一个例子,在Int32使用的情况下将是有益的。 关于Int32,我们有:
- LowWordLowByte
- LowWordHighByte
- HighWordLowByte
- HighWordHighByte.
因此,我制定了以下方法,将Int32的数值转换成几端的海星体,其中每个星号都由一个白天空间与他人分离。 当你传送数据,要求接收人更快地进行处理时,他只能使用Split(“”),并且获得作为单列载体的 by。
public static String IntToLittleEndianWhitespacedHexString(int pValue, uint pSize)
{
String result = String.Empty;
pSize = pSize < 4 ? pSize : 4;
byte tmpByte = 0x00;
for (int i = 0; i < pSize; i++)
{
tmpByte = (byte)((pValue >> i * 8) & 0xFF);
result += tmpByte.ToString("X2") + " ";
}
return result.TrimEnd( );
}
使用:
String value1 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x927C, 4);
String value2 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x3FFFF, 4);
String value3 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x927C, 2);
String value4 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x3FFFF, 1);
结果是:
- 7C 92 00 00
- FF FF 03 00
- 7C 92
- FF.
如果难以理解我所制定的方法,那么以下办法可能更可理解:
public static String IntToLittleEndianWhitespacedHexString(int pValue)
{
String result = String.Empty;
byte lowWordLowByte = (byte)(pValue & 0xFF);
byte lowWordHighByte = (byte)((pValue >> 8) & 0xFF);
byte highWordLowByte = (byte)((pValue >> 16) & 0xFF);
byte highWordHighByte = (byte)((pValue >> 24) & 0xFF);
result = lowWordLowByte.ToString("X2") + " " +
lowWordHighByte.ToString("X2") + " " +
highWordLowByte.ToString("X2") + " " +
highWordHighByte.ToString("X2");
return result;
}
评注:
- Of course insteand of uint pSize there can be an enum specifying Byte, Word, DoubleWord
- Instead of converting to hex string and creating the little endian string, you can convert to chars and do whatever you want to do.
希望这将有助于人!