Python: ctypes how to convert c_char_Array into c_char_p2019 Community Moderator ElectionHow to merge two dictionaries in a single expression?How do I check whether a file exists without exceptions?Calling an external command in PythonWhat are metaclasses in Python?Finding the index of an item given a list containing it in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?How to get the current time in PythonHow can I make a time delay in Python?Does Python have a string 'contains' substring method?
Print last inputted byte
Print a physical multiplication table
Isn't the word "experience" wrongly used in this context?
How can an organ that provides biological immortality be unable to regenerate?
If I cast the Enlarge/Reduce spell on an arrow, what weapon could it count as?
is this saw blade faulty?
How can a new country break out from a developed country without war?
Why is there so much iron?
Hot air balloons as primitive bombers
Why is this tree refusing to shed its dead leaves?
Is xar preinstalled on macOS?
Weird lines in Microsoft Word
What is the tangent at a sharp point on a curve?
Gauss brackets with double vertical lines
Do native speakers use "ultima" and "proxima" frequently in spoken English?
Are hand made posters acceptable in Academia?
Did Nintendo change its mind about 68000 SNES?
Fair way to split coins
How do researchers send unsolicited emails asking for feedback on their works?
Homology of the fiber
Have the tides ever turned twice on any open problem?
Can "few" be used as a subject? If so, what is the rule?
What is the difference between something being completely legal and being completely decriminalized?
Do I need to convey a moral for each of my blog post?
Python: ctypes how to convert c_char_Array into c_char_p
2019 Community Moderator ElectionHow to merge two dictionaries in a single expression?How do I check whether a file exists without exceptions?Calling an external command in PythonWhat are metaclasses in Python?Finding the index of an item given a list containing it in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?How to get the current time in PythonHow can I make a time delay in Python?Does Python have a string 'contains' substring method?
The function create_string_buffer(b"foo", 3)
returns a type c_char_Array_3
. Trying to pass this in where c_char_p
is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance
. How do I pass the output of create_string_buffer
into a field that expects c_char_p
?
I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer
However, it's unclear to me what the answer was.
python ctypes
add a comment |
The function create_string_buffer(b"foo", 3)
returns a type c_char_Array_3
. Trying to pass this in where c_char_p
is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance
. How do I pass the output of create_string_buffer
into a field that expects c_char_p
?
I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer
However, it's unclear to me what the answer was.
python ctypes
add a comment |
The function create_string_buffer(b"foo", 3)
returns a type c_char_Array_3
. Trying to pass this in where c_char_p
is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance
. How do I pass the output of create_string_buffer
into a field that expects c_char_p
?
I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer
However, it's unclear to me what the answer was.
python ctypes
The function create_string_buffer(b"foo", 3)
returns a type c_char_Array_3
. Trying to pass this in where c_char_p
is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance
. How do I pass the output of create_string_buffer
into a field that expects c_char_p
?
I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer
However, it's unclear to me what the answer was.
python ctypes
python ctypes
edited Mar 7 at 18:48
Tommy
asked Mar 7 at 18:42
TommyTommy
5,08653460
5,08653460
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can pass a create_string_buffer
object to a function with a c_char_p
as an .argtypes
parameter, but not when it is a member of a structure. cast
can work around it. This was mentioned in the link you provided in the question.
from ctypes import *
class foo(Structure):
_fields_ = [('bar',c_char_p)]
s = create_string_buffer(b'test')
f = foo()
f.bar = cast(s,c_char_p)
print(f.bar)
s[0] = b'q'
print(f.bar)
Output:
b'test'
b'qest'
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55050741%2fpython-ctypes-how-to-convert-c-char-array-into-c-char-p%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can pass a create_string_buffer
object to a function with a c_char_p
as an .argtypes
parameter, but not when it is a member of a structure. cast
can work around it. This was mentioned in the link you provided in the question.
from ctypes import *
class foo(Structure):
_fields_ = [('bar',c_char_p)]
s = create_string_buffer(b'test')
f = foo()
f.bar = cast(s,c_char_p)
print(f.bar)
s[0] = b'q'
print(f.bar)
Output:
b'test'
b'qest'
add a comment |
You can pass a create_string_buffer
object to a function with a c_char_p
as an .argtypes
parameter, but not when it is a member of a structure. cast
can work around it. This was mentioned in the link you provided in the question.
from ctypes import *
class foo(Structure):
_fields_ = [('bar',c_char_p)]
s = create_string_buffer(b'test')
f = foo()
f.bar = cast(s,c_char_p)
print(f.bar)
s[0] = b'q'
print(f.bar)
Output:
b'test'
b'qest'
add a comment |
You can pass a create_string_buffer
object to a function with a c_char_p
as an .argtypes
parameter, but not when it is a member of a structure. cast
can work around it. This was mentioned in the link you provided in the question.
from ctypes import *
class foo(Structure):
_fields_ = [('bar',c_char_p)]
s = create_string_buffer(b'test')
f = foo()
f.bar = cast(s,c_char_p)
print(f.bar)
s[0] = b'q'
print(f.bar)
Output:
b'test'
b'qest'
You can pass a create_string_buffer
object to a function with a c_char_p
as an .argtypes
parameter, but not when it is a member of a structure. cast
can work around it. This was mentioned in the link you provided in the question.
from ctypes import *
class foo(Structure):
_fields_ = [('bar',c_char_p)]
s = create_string_buffer(b'test')
f = foo()
f.bar = cast(s,c_char_p)
print(f.bar)
s[0] = b'q'
print(f.bar)
Output:
b'test'
b'qest'
answered Mar 7 at 23:25
Mark TolonenMark Tolonen
95.4k12115177
95.4k12115177
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55050741%2fpython-ctypes-how-to-convert-c-char-array-into-c-char-p%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown