FourCC作为int C#

FourCC作为int C#,c#,fourcc,C#,Fourcc,我正在使用一个SDK,该SDK要求将AVI编解码器作为FourCC值的8位int表示形式传递。FourCC的值是WVC1,我尝试将ASCII转换为每个字符对应的int值,我估计是87864301,但这是不正确的 有人知道有没有一组标准的整数值表示FourCC值,或者用某种方式进行转换吗? 建议FOURCC的字符必须是十六进制值,并在转换之前反转 下面是一个示例控制台应用程序,它使用与YUY2(WVC1=31435657)的值相匹配的值。 更新了代码以包含大/小尾端和GUID转换 using Sy

我正在使用一个SDK,该SDK要求将AVI编解码器作为FourCC值的8位int表示形式传递。FourCC的值是WVC1,我尝试将ASCII转换为每个字符对应的int值,我估计是87864301,但这是不正确的

有人知道有没有一组标准的整数值表示FourCC值,或者用某种方式进行转换吗?

建议FOURCC的字符必须是十六进制值,并在转换之前反转

下面是一个示例控制台应用程序,它使用与YUY2(WVC1=31435657)的值相匹配的值。 更新了代码以包含大/小尾端和GUID转换

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FourCC
{
    class Program
    {
        static void Main(string[] args)
        {
            string fourCC = "YUY2";

            Console.WriteLine("Big endian value of {0} is {1}", fourCC, ConvertFourCC(fourCC, toBigEndian:true));
            Console.WriteLine("Little endian value of {0} is {1}", fourCC, ConvertFourCC(fourCC));
            Console.WriteLine("GUID value of {0} is {1}", fourCC, ConvertFourCC(fourCC, toGuid:true));
            Console.ReadKey();

        }

        static string ConvertFourCC(string fourCC, bool toBigEndian = false, bool toGuid = false)
        {
            if (!String.IsNullOrWhiteSpace(fourCC))
            {
                if (fourCC.Length != 4)
                {
                    throw new FormatException("FOURCC length must be four characters");                    
                }
                else
                {
                    char[] c = fourCC.ToCharArray();

                    if (toBigEndian)
                    {
                        return String.Format("{0:X}", (c[0] << 24| c[1] << 16 | c[2] << 8 | c[3]));
                    }
                    else if (toGuid)
                    {
                        return String.Format("{0:X}", (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0]) + "-0000-0010-8000-00AA00389B71";
                    }
                    else
                    {
                        return String.Format("{0:X}", (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0]);
                    }
                }
            }
            return null;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间FourCC
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串fourCC=“YUY2”;
WriteLine({0}的大端值为{1}),fourCC,ConvertFourCC(fourCC,toBigEndian:true));
WriteLine({0}的小端值为{1}),fourCC,ConvertFourCC(fourCC));
WriteLine({0}的GUID值为{1}),fourCC,ConvertFourCC(fourCC,toGuid:true));
Console.ReadKey();
}
静态字符串ConvertFourCC(字符串fourCC,bool-toBigEndian=false,bool-toGuid=false)
{
如果(!String.IsNullOrWhiteSpace(fourCC))
{
如果(四立方厘米长度!=4)
{
抛出新FormatException(“FOURCC长度必须为四个字符”);
}
其他的
{
char[]c=fourCC.ToCharArray();
国际单项体育联合会(托比根迪安)
{
返回String.Format(“{0:X}”,(c[0]是否有帮助: