aşağıdaki birim testi düşünün:Neden Guid.ToString ("n") aynı kılavuzun bir bayt dizisinden oluşturulmuş bir hex dizesiyle aynı değil?
[TestMethod]
public void TestByteToString()
{
var guid = new Guid("61772f3ae5de5f4a8577eb1003c5c054");
var guidString = guid.ToString("n");
var byteString = ToHexString(guid.ToByteArray());
Assert.AreEqual(guidString, byteString);
}
private String ToHexString(Byte[] bytes)
{
var hex = new StringBuilder(bytes.Length * 2);
foreach(var b in bytes)
{
hex.AppendFormat("{0:x2}", b);
}
return hex.ToString();
}
İşte sonuç var:
Assert.AreEqual failed. Expected:<61772f3ae5de5f4a8577eb1003c5c054>. Actual:<3a2f7761dee54a5f8577eb1003c5c054>.
Neden "b" ve "c" de tersine çevrilmeyecek? – Sebastian
@SebastianGodelet - çünkü "int" yerine "kısa" dırlar. – ChrisF
Bir bayttan daha büyük olan her şeyin endianna tabi olduğunu düşündüm: 'short s = 0xaf21;' saklanabilir: | af | 21 | veya | 21 | af | – Sebastian