从python代码到C的十六进制字节数组#

2024-05-14 09:49:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将python代码复制成C格式,代码如下

bytes([ i ^ j for i, j in zip(b'a', b'1') ]).hex()

上述代码的结果为50

下面是c版本,但结果是3830而不是50

   class Program
    {
        static void Main(string[] args)
        {

            byte[] satu = Encoding.ASCII.GetBytes("a");
            byte[] dua =  Encoding.ASCII.GetBytes("1") ;

            var result = string.Empty;
            foreach (var pair in Zip(satu, dua))
            {
                //Console.WriteLine(pair.First ^ pair.Second);
                result += pair.First ^ pair.Second;
            }
            Console.WriteLine(result);
            byte[] resbyte = Encoding.ASCII.GetBytes(result);
            var hexString = BitConverter.ToString(resbyte);
            Console.WriteLine(hexString.Replace("-", ""));
        }
        class Pair<T1, T2>
        {
            public T1 First { get; set; }
            public T2 Second { get; set; }
        }
        static IEnumerable<Pair<T1, T2>> Zip<T1, T2>(IEnumerable<T1> first, IEnumerable<T2> second)
        {

            using (IEnumerator<T1> e1 = first.GetEnumerator())
            using (IEnumerator<T2> e2 = second.GetEnumerator())
            {
                while (e1.MoveNext() && e2.MoveNext())
                {
                    yield return new Pair<T1, T2>() { First = e1.Current, Second = e2.Current };
                }
            }
        }
    }

Tags: 代码varasciiresultbyteencodingconsolefirst

热门问题