从不安全的字节指针获取字符串到固定的char数组

贾斯汀·斯基尔斯

我试图了解如何从以下结构中的不安全字节指针获取字符串。SDL_TEXTINPUTEVENT_TEXTSIZE为32。

[StructLayout(LayoutKind.Sequential)]
public unsafe struct SDL_TextInputEvent
{
    public SDL_EventType type;
    public UInt32 timestamp;
    public UInt32 windowID;
    public fixed byte text[SDL_TEXTINPUTEVENT_TEXT_SIZE];
}

我试过了:

byte[] rawBytes = new byte[SDL_TEXTINPUTEVENT_TEXT_SIZE];

unsafe
{
    Marshal.Copy((IntPtr)rawEvent.text.text, rawBytes, 0, SDL_TEXTINPUTEVENT_TEXT_SIZE);
}

string text = System.Text.Encoding.UTF8.GetString(rawBytes);

哪种方法有效,但是给了我一个字符串,除了实际输入的字符以外,还有很多额外的字节。我是否应该解析字节数组并搜索以0结尾的字符以避免过多的字符?

我完全误会了什么吗?

供参考,已编组到.NET运行时的原始C结构为:

typedef struct SDL_TextInputEvent
{
    Uint32 type;
    Uint32 timestamp;
    Uint32 windowID;
    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];
} SDL_TextInputEvent;
戴维·赫弗南

您确实需要找到空终止符。并且Marshal.Copy不会那样做。Marshal.PtrToStringAnsi如果您的文本是ANSI编码的,则可以使用但是UTF-8没有这样的功能。因此,您需要遍历数组以寻找零字节。遇到这种情况时,您便知道缓冲区的实际长度,可以修改现有代码以使用该长度而不是最大可能的长度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从不安全的结构中获取固定的数组值

来自分类Dev

ReasonReact 不安全的字符串到元素

来自分类Dev

字符串replaceall线程不安全

来自分类Dev

从指针数组读取字符串

来自分类Dev

将类指针转换为char指针(不安全)

来自分类Dev

NSRunAlertPanel +格式字符串不是字符串文字(可能不安全)

来自分类Dev

“格式字符串不是字符串文字(可能不安全)”

来自分类Dev

错误获取字符串到数组字符串和字符串到数组int

来自分类Dev

什么时候在 C# 中使用“不安全的字符串修改”是安全的?

来自分类Dev

类别:不安全的动态字节数组

来自分类Dev

从枚举获取字符串或数组

来自分类Dev

从多维数组获取字符串

来自分类Dev

如何从字符串中删除不安全字符以登录C#

来自分类Dev

如何从字符串中删除不安全字符以登录C#

来自分类Dev

ElementTree失败,字符串中包含不安全的字符

来自分类Dev

从表示为字符串的非常大的整数中获取字节数组

来自分类Dev

如何将字节存储在数组中并获取字符串

来自分类Dev

在.NET中获取字符串的字节数组,然后在Javascript中进行转换

来自分类Dev

如何从生成的 PBKDF2 密码的字节数组中获取字符串

来自分类Dev

如果我将密码作为字符串而不是安全字符串传递,它总是不安全吗?

来自分类Dev

Swift:无法在数组中存储不安全指针

来自分类Dev

Swift:无法在数组中存储不安全指针

来自分类Dev

在 Swift 中使用 C 库获取不安全的指针

来自分类Dev

python:*为什么*使用python的字符串操作组装sqlite查询不安全?

来自分类Dev

在Javascript中构建HTML字符串真的不安全吗?

来自分类Dev

在网址中使用查询字符串是否不安全?

来自分类Dev

将硬编码的字符串用于xml元素是否不安全?

来自分类Dev

我如何从字节获取字符串的响应

来自分类Dev

获取字符串中的字节数据

Related 相关文章

  1. 1

    从不安全的结构中获取固定的数组值

  2. 2

    ReasonReact 不安全的字符串到元素

  3. 3

    字符串replaceall线程不安全

  4. 4

    从指针数组读取字符串

  5. 5

    将类指针转换为char指针(不安全)

  6. 6

    NSRunAlertPanel +格式字符串不是字符串文字(可能不安全)

  7. 7

    “格式字符串不是字符串文字(可能不安全)”

  8. 8

    错误获取字符串到数组字符串和字符串到数组int

  9. 9

    什么时候在 C# 中使用“不安全的字符串修改”是安全的?

  10. 10

    类别:不安全的动态字节数组

  11. 11

    从枚举获取字符串或数组

  12. 12

    从多维数组获取字符串

  13. 13

    如何从字符串中删除不安全字符以登录C#

  14. 14

    如何从字符串中删除不安全字符以登录C#

  15. 15

    ElementTree失败,字符串中包含不安全的字符

  16. 16

    从表示为字符串的非常大的整数中获取字节数组

  17. 17

    如何将字节存储在数组中并获取字符串

  18. 18

    在.NET中获取字符串的字节数组,然后在Javascript中进行转换

  19. 19

    如何从生成的 PBKDF2 密码的字节数组中获取字符串

  20. 20

    如果我将密码作为字符串而不是安全字符串传递,它总是不安全吗?

  21. 21

    Swift:无法在数组中存储不安全指针

  22. 22

    Swift:无法在数组中存储不安全指针

  23. 23

    在 Swift 中使用 C 库获取不安全的指针

  24. 24

    python:*为什么*使用python的字符串操作组装sqlite查询不安全?

  25. 25

    在Javascript中构建HTML字符串真的不安全吗?

  26. 26

    在网址中使用查询字符串是否不安全?

  27. 27

    将硬编码的字符串用于xml元素是否不安全?

  28. 28

    我如何从字节获取字符串的响应

  29. 29

    获取字符串中的字节数据

热门标签

归档