Add ToUint64 for big endian numbers

This commit is contained in:
Sławomir Śpiewak 2024-08-05 15:37:02 +02:00
parent 071a33eb94
commit 681e82dd3f
2 changed files with 16 additions and 6 deletions

View File

@ -45,7 +45,7 @@ namespace GameRes.Formats.DxLib
public int ParentNode; // index of parent node.
public int[] ChildNode; //two children nodes, -1 if not existent.
DXA8HuffmanNode()
internal DXA8HuffmanNode()
{
bitArray = new byte[32];
ChildNode = new int[2];
@ -96,6 +96,7 @@ namespace GameRes.Formats.DxLib
for (int i=0; i<nodes.Length; i++)
{
nodes[i] = new DXA8HuffmanNode();
nodes[i].ParentNode = -1;
nodes[i].ChildNode[0] = -1;
nodes[i].ChildNode[1] = -1;
@ -338,7 +339,7 @@ namespace GameRes.Formats.DxLib
{
if (0 == m_bit_count)
{
m_bits = LittleEndian.ToUInt64 (m_input, m_src);
m_bits = BigEndian.ToUInt64 (m_input, m_src);
m_src += 8;
m_bit_count = 64;
}

View File

@ -167,14 +167,23 @@ namespace GameRes.Utility
return (short)(value[index] << 8 | value[index+1]);
}
public static uint ToUInt32<TArray> (TArray value, int index) where TArray : IList<byte>
public static uint ToUInt32<TArray>(TArray value, int index) where TArray : IList<byte>
{
return (uint)(value[index] << 24 | value[index+1] << 16 | value[index+2] << 8 | value[index+3]);
return (uint)(value[index] << 24 | value[index + 1] << 16 | value[index + 2] << 8 | value[index + 3]);
}
public static int ToInt32<TArray> (TArray value, int index) where TArray : IList<byte>
public static int ToInt32<TArray>(TArray value, int index) where TArray : IList<byte>
{
return (int)ToUInt32 (value, index);
return (int)ToUInt32(value, index);
}
public static ulong ToUInt64<TArray>(TArray value, int index) where TArray : IList<byte>
{
return (ulong)(value[index]<<56|value[index+1]<<48|value[index+2]<<40|value[index+3]<<32|value[index+4] << 24 | value[index + 5] << 16 | value[index + 6] << 8 | value[index + 7]);
}
public static long ToInt64<TArray>(TArray value, int index) where TArray : IList<byte>
{
return (long)ToUInt64(value, index);
}
public static void Pack (ushort value, byte[] buf, int index)