Я отлаживаю чужой код. Я не очень хорошо знаю Лую. Я хотел бы знать, возможно ли отрицательное возвращаемое значение из string.byte.Может ли функция string.byte в Lua возвращать отрицательное значение?
ответ
No. Диапазон string.byte() должен быть 0..255 включительно; документация не указывается, но исходный код понятен:
static int str_byte (lua_State *L) {
size_t l;
const char *s = luaL_checklstring(L, 1, &l);
ptrdiff_t posi = posrelat(luaL_optinteger(L, 2, 1), l);
ptrdiff_t pose = posrelat(luaL_optinteger(L, 3, posi), l);
int n, i;
if (posi <= 0) posi = 1;
if ((size_t)pose > l) pose = l;
if (posi > pose) return 0; /* empty interval; return no values */
n = (int)(pose - posi + 1);
if (posi + n <= pose) /* overflow? */
luaL_error(L, "string slice too long");
luaL_checkstack(L, n, "string slice too long");
for (i=0; i<n; i++)
lua_pushinteger(L, uchar(s[posi+i-1]));
return n;
}
из lua-5.1.4/src/strlib.c, (C) 1994-2008 Lua.org; по лицензии BSD
Важной линией является вызов lua_pushinteger, который используется для возврата целочисленного значения вызывающей функции и uchar, который принуждает значение к одному в диапазоне от 0..255.
Не похоже, что он может возвращать отрицательные значения - однако я не работал с ним много.
Вот некоторые ссылки на документацию, которые могут быть полезны:
, если у Вас возникли вопросы относительно Lua внутренней работы, его всегда легче всего проверить источник: http://www.lua.org/source/5.1/lstrlib.c.html#str_byte (и да, я понимаю, что понимание этого требует немного работы;))
- 1. Может ли функция возвращать * просто * значение rgba?
- 2. Будет ли string.GetHashCode() возвращать отрицательное значение?
- 3. Введите номер ключа string.byte в Lua
- 4. Может ли функция возвращать массив?
- 5. Функция Возвращаемое отрицательное значение
- 6. Может ли оператор длины Lua возвращать отрицательный индекс?
- 7. Метод BigDecimal остаток может возвращать отрицательное значение, почему?
- 8. Функция не возвращает отрицательное значение
- 9. Может ли функция возвращать строку в c?
- 10. Как функция void может возвращать значение? C++
- 11. Python: может ли функция возвращать строку?
- 12. Может ли эта функция возвращать значение int, связывая элементы списка?
- 13. C: может ли функция возвращать глобальную переменную?
- 14. Может ли функция VBScript возвращать словарь?
- 15. Может ли функция PHP возвращать много варов?
- 16. Может ли функция Lua вернуть несколько результатов?
- 17. Должна ли каждая функция Javascript возвращать значение?
- 18. Функция не может возвращать строковые
- 19. индекс отрицательное число в массиве в lua
- 20. Может ли сигналы Qt возвращать значение?
- 21. Может ли свойство длины массива JS когда-либо возвращать отрицательное значение?
- 22. Может ли n% = m возвращать отрицательное значение для очень больших неотрицательных n и m?
- 23. Функция должна возвращать Значение Вопрос
- 24. Может ли ** 0,5 вернуть отрицательное число?
- 25. Может ли функция Python возвращать только второе из двух значений?
- 26. Аббревиатура номер Функция не выводит отрицательное значение
- 27. Может ли Lua «Timeout»?
- 28. Может ли функция cellRenderer в ag-Grid возвращать компонент React?
- 29. Может ли «System.Math.Cos» возвращать (плавать)?
- 30. Может ли локальная функция заменить \ переопределить себя в Lua
Любой ссылку или DOCO на что подтвердить? Я верю, что это объяснит ошибку, которую я вижу. Однако я хотел бы что-то сказать. – rfeak
Документация гордится своей плотностью; Я вставлю исходный код для str_byte, где вы можете увидеть, что он преобразуется в uchar, а затем в целое число до возврата значения. – swdunlop
Это именно то, что мне нужно. Спасибо! – rfeak