Расширение Nanobind C++. Как я могу преобразовать bytes() в Python в uint8_t* в С++?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Расширение Nanobind C++. Как я могу преобразовать bytes() в Python в uint8_t* в С++?

Сообщение Anonymous »

Я могу преобразовать в C++ только 1-байтовые данные. Но если я изменю uint8_t* на uint16_t, все будет в порядке.
TypeError: func(): несовместимые аргументы функции. Поддерживаются следующие типы аргументов:
1. func(arg0: int, arg1: int, /) -> Нет
Вызывается с типами: int, int
ФАЙЛ C++:
#include
#include
namespace nb = nanobind;

void func (const uint8_t* ptr, uint64_t size) {
printf("%s\n",ptr);
}

NB_MODULE(my_ext, m) {
m.def("func", &func, nb::rv_policy::reference);
}

ФАЙЛ Python:
import my_ext
import ctypes
import sys

data = 255
data = data.to_bytes(2, byteorder='big')
data = int.from_bytes(data, byteorder='big')
my_ext.func(data, int(sys.getsizeof(data)))

CMakeLists
cmake_minimum_required(VERSION 3.15...3.27)
project(sp_project)

if (CMAKE_VERSION VERSION_LESS 3.18)
set(DEV_MODULE Development)
else()
set(DEV_MODULE Development.Module)
endif()

find_package(Python 3.8 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)

if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()

# Detect the installed nanobind package and import it into CMake
execute_process(
COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE NB_DIR)
list(APPEND CMAKE_PREFIX_PATH "${NB_DIR}")
find_package(nanobind CONFIG REQUIRED)
nanobind_add_module(my_ext my_ext.cpp)


Подробнее здесь: https://stackoverflow.com/questions/786 ... nt8-t-to-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Расширение Nanobind C++. Как я могу преобразовать bytes() в Python в uint8_t* в С++?
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Неожиданный тип(ы): (int, bytes) Возможные типы: (SupportsIndex, SupportsIndex) (slice, Iterable[SupportsIndex] | bytes)
    Anonymous » » в форуме Python
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Преобразовать текущую дату в массив байтов Uint8 в формате с прямым порядком байтов.
    Anonymous » » в форуме Javascript
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать число в int8, int16, int32, uint8, uint16 или uint32
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Почему я должен преобразовать "uint8" в "float32"
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»