Files

33 lines
1.0 KiB
C#
Raw Permalink Normal View History

2026-03-14 20:51:22 -04:00
using System;
2026-03-24 19:17:25 -04:00
using SabreTools.Numerics.Extensions;
2026-03-13 21:01:38 -04:00
namespace SabreTools.Data.Extensions
{
public static class XboxExecutableExtensions
2026-03-13 21:01:38 -04:00
{
/// <summary>
2026-03-14 20:51:22 -04:00
/// Convert a UInt32 to a formatted XBE title ID
2026-03-13 21:01:38 -04:00
/// </summary>
public static string ToFormattedXBETitleID(this uint value)
2026-03-13 21:01:38 -04:00
{
2026-03-14 20:51:22 -04:00
// Convert to a byte array
byte[] data = BitConverter.GetBytes(value);
2026-03-13 21:01:38 -04:00
// Create the prefix
string prefix1 = (0x41 <= data[3] && data[3] <= 0x5A) || (0x30 <= data[3] && data[3] <= 0x39)
? $"{(char)data[3]}"
: $"{data[3]:X2}";
string prefix2 = (0x41 <= data[2] && data[2] <= 0x5A) || (0x30 <= data[2] && data[2] <= 0x39)
? $"{(char)data[2]}"
: $"{data[2]:X2}";
// Create the serial
int offset = 0;
ushort serial = data.ReadUInt16LittleEndian(ref offset);
// Assemble and return
return $"{prefix1}{prefix2}-{serial:D3}";
}
}
}