相关疑难解决方法(0)


两个十六进制字节数组的XOR函数

我试图执行独占或两个字节数组并将结果作为十六进制字符串返回.我已将两个字节数组转换为相应的二进制字符串.每个字节都有位,因为它有8个字节.

byte[] key =  { 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18 };
byte[] PAN =  { 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23 };
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经使用了一种方法,将字节数组转换为相应的二进制字符串值,例如"10101010101".但是,当我执行以下方法来获取XOR时,我会返回一串笑脸,这可能是一些特殊的ASCII字符.

但是我对如何做到这一点没有任何想法.我想将二进制字符串转换为整数,但这不是一个好的解决方案,因为它不适合作为整数.

请问您有什么想法吗?可能有一些示例代码?

public static string exclusiveOR(string string_1, string string_2)
{
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < string_1.Length; i++)
        sb.Append((char)(string_1[i] ^ string_2[(i % string_2.Length)]));
        String result = sb.ToString();

        return result;
}
Run Code Online (Sandbox Code Playgroud)

c# string logic hex xor

6
推荐指数
4
解决办法
2万
查看次数

试图理解静态构造函数

我试图理解对静态构造函数的需求.我找到的所有信息都没有回答我的问题.你为什么要这样做

class SimpleClass
{
    // Static variable that must be initialized at run time.
    static readonly long baseline;

    // Static constructor is called at most one time, before any
    // instance constructor is invoked or member is accessed.
    static SimpleClass()
    {
        baseline = DateTime.Now.Ticks;
    }
}
Run Code Online (Sandbox Code Playgroud)

与此相反

class SimpleClass
{
    // Static variable that must be initialized at run time.
    static readonly long baseline = DateTime.Now.Ticks;

    // Static constructor is called at most one time, before any
    // instance constructor …
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
1
解决办法
172
查看次数

C#增量运算符(++)问题:为什么输出错误?

我有一个简单的c#控制台应用程序,但我输错了为什么?

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

namespace ConsoleApplication11
{
class Program
{
    static void Main(string[] args)
    {
        int i = 100;
        for (int n = 0; n < 100; n++)
        {
            i = i++;
        }
        Console.WriteLine(i);
    }

}
}
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
3
解决办法
7864
查看次数

前减量与后减量

什么时候应该使用前减量,什么时候使用后减量?

对于以下代码片段,我应该使用 pre 还是 post 递减。

static private void function(int number)
{
    charArr = new char[number];
    int i = 0;
    int tempCounter;
    int j = 0;
    while(charrArr!=someCharArr)
    {
        tempCounter = number - 1;
        password[tempCounter] = element[i%element.Length];
        i++;
        //This is the loop the I want to use the decrementing in.
        //Suppose I have a char array of size 5, the last element of index 5 is updated
        //in the previous statement.
        //About the upcoming indexes 4, 3, 2, 1 and ZERO. …
Run Code Online (Sandbox Code Playgroud)

c# decrement

4
推荐指数
1
解决办法
1万
查看次数

在哪些情况下i ++和++我可以引用相同的值?

为什么i++++i在下面的代码一样吗?

#include <stdio.h>  

int main()  
{  
    int i=5;  

    while(1)  
    {  
        i++;                  /*replacing i++ by ++i also gives 6*/  
        printf("%d",i);  
        break;  
    }  

    return 0; 
}  
Run Code Online (Sandbox Code Playgroud)

输出是6.我了解到,增量操作者i++具有其值i的当前值,并导致所存储的值i被incremented.But i's值显示为6虽然i的当前值是5的更换i++通过++i也给出了相同的值6.为什么是i++++i在这种情况下相同的,为什么输出是6虽然初始值是5.

c increment

3
推荐指数
1
解决办法
396
查看次数

为什么"ref"没有为下一个字段分配更新值?

我发现了一个非常酷的编译器功能.但是,我无法理解这种行为的逻辑.

static int IncrementValue(ref int i) { return i++;}
Run Code Online (Sandbox Code Playgroud)

和主要方法:

static void Main(string[] args)
{
    int a = 2;
    int b = IncrementValue(ref a);
    Console.WriteLine(a+b);
} 
Run Code Online (Sandbox Code Playgroud)

输出为5.

我的问题是:

  1. 为什么"b"字段等于2?(在我看来,它应该是3,因为"ref"关键字不是按值复制,而是关键字按值逐字段.因此,"b"应该是"a + 1")

.net c# ref pass-by-reference post-increment

3
推荐指数
1
解决办法
85
查看次数

同时最小和最大

我试图实现一种算法来搜索给定数组中的最小和最大元素,并使用Cormen的算法导论中的想法.我的代码编译并开始工作,输出生成的随机数组,然后在很长一段时间内什么都不做.为什么会这样?

代码是这样的:

// fast min and max --cormen exercise 1.cpp: entry point
//implemented from a verbal description in cormen's book, p 243

#include "stdafx.h"
#include <vector>
#include <ctime>
#include <cstdlib>
#include <iostream>

struct min_and_max
{
    int min, max;
};


min_and_max find_min_and_max(std::vector<int>& A)
{
    int n = A.size();
    int min, max;
    if (n%2 == 1)
        min = max = A[0];
    if (n%2 == 0)
        if (A[0] < A[1])
        {
            min = A[0];
            max = A[1];
        }
        else
        {
            min …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm max minimum

2
推荐指数
1
解决办法
1629
查看次数

基本整数增量,带有意外结果

图像是来自Swift游乐场的屏幕截图 - >左侧的代码,右侧的日志(如果您可以调用它).

我想我预计会发生的是第8行会导致1,因为,你知道,0 + 1 = 1

任何人都可以解释这里发生了什么?

在此输入图像描述

现在用println

在此输入图像描述

在你说出任何事情之前,我知道半冒号现在没用了,这是习惯,因为我今天决定学习来自Obj-C的Swift.

ios swift swift-playground

2
推荐指数
1
解决办法
69
查看次数

展开循环工作,for循环不起作用

我有一些我不理解的行为.虽然展开的循环工作正常!循环抛出IndexOutOfRangeExceptions.调试显示有0..9 teamButtons和0..9卡c [i].:(

private void Awake()
{
    InitCards();
    // This works!
    teamButtons[0].onClick.AddListener(() => SetCard(c[0]));
    teamButtons[1].onClick.AddListener(() => SetCard(c[1]));
    teamButtons[2].onClick.AddListener(() => SetCard(c[2]));

    teamButtons[3].onClick.AddListener(() => SetCard(c[3]));
    teamButtons[4].onClick.AddListener(() => SetCard(c[4]));
    teamButtons[5].onClick.AddListener(() => SetCard(c[5]));

    teamButtons[6].onClick.AddListener(() => SetCard(c[6]));
    teamButtons[7].onClick.AddListener(() => SetCard(c[7]));
    teamButtons[8].onClick.AddListener(() => SetCard(c[8]));
    // This yields an IndexOutOfRangeException
    for (int i = 0; i < 9; ++i)
    {
      teamButtons[i].onClick.AddListener(() => { SetCard(c[i]); });
    } 
}
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

2
推荐指数
1
解决办法
445
查看次数