Объективный эквивалент C байта в C #

1

В С#

string p = "help";
byte myByte = (byte)p[1];

В С# байт нетзнаковое 8-битное целое число (0-255). Как достичь цели в Objective C?

Фактическое требование состоит в том, что я хочу преобразовать следующий сегмент кода, который записывается в С# в объект c. Часть, которую я не могу понять, - это преобразование байтов.

static Int64 Encrypt(string p)
{       
    Int64 c = 31;
    for (int i = 0; i < p.Length; i++)            
        c = c * 47 + (byte)p[i] % 97;            

    return c;
}
  • 0
    Хотя я не согласен с этим использованием из-за цели типа, я видел, что люди используют char в качестве байта.
  • 2
    Строка в C # состоит из символов Unicode (UTF-16), а не байтов. Что вы пытаетесь достичь?
Показать ещё 4 комментария
Теги:
string
char
byte

1 ответ

1
Лучший ответ

Равновесие для С#:

Примечание. Все символы 8-бит.

int64_t Encrypt(NSString *p) {
    const char *cString = [p cStringUsingEncoding: NSASCIIStringEncoding];

    unsigned long length = strlen(cString);
    int64_t c = 31;
    for (int i = 0; i < length; i++)
        c = c * 47 + cString[i] % 97;

    return c;
}

NSString *p = @"help";
NSLog(@"p: %@", p);

int64_t c = Encrypt(p);
NSLog(@"c: lld", c);

Выход NSLog:

p: help
c: 152006240

  • 0
    пожалуйста, смотрите обновленный вопрос
  • 0
    Обновленный ответ.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню