Sbyte [] vs byte [] [] используя методы - PullRequest
2 голосов
/ 08 июня 2010

Написано

byte[][] getImagesForFields(java.lang.String[] fieldnames) 

Получает массив изображений для заданных полей.

С другой стороны, пока я использую метод в проекте веб-приложения, построенном наasp.net 2.o используя c #;

предоставленный веб-метод, объявленный выше, возвращает sbyte;Посмотрите мой код ниже;

  formClearanceService.openSession(imageServiceUser);
  formClearanceService.prepareInstance(formId);
  byte[][] fieldImagesList = formClearanceService.getImagesForFields(fieldNames);
  formClearanceService.closeSession();

, поэтому я получаю следующую ошибку: Не могу неявно преобразовать тип 'sbyte []' в 'byte [] []'

Итак, 1- я должен спросить поставщика веб-услуг, что происходит?или 2 - любым другим способом, который может использовать sbyte, как я предполагал, использовать byte [] [], например, следующим образом: byte [] ssss = fieldImagesList [0] ..

1 Ответ

1 голос
/ 08 июня 2010

Java имеет подписанные байты, поэтому эта часть в некотором смысле является правильной (хотя неподписанные байты более естественны), но досадно, что она возвращает один массив, а не зубчатый массив.Я ожидаю, что вам придется сравнить некоторые данные, чтобы увидеть, что вы получили, с тем, что вы ожидали.

Но переключение между подписанным и неподписанным может быть таким простым:

sbyte[] orig = ...
byte[] arr = Array.ConvertAll(orig, b => (byte)b);

или (быстрее) просто:

sbyte[] orig = ...
byte[] arr = new byte[orig.Length];
Buffer.BlockCopy(orig, 0, arr, 0, orig.Length);
...