gpt4 book ai didi

使用十六进制值创建字符数组

转载 作者:行者123 更新时间:2023-12-01 09:25:42 25 4
gpt4 key购买 nike

我有一个简短的问题要问那些了解 C 语言的人 - 我正在尝试使用十六进制值保存一个 char 数组,所以它看起来像这样:

char string[84]={0x32,0x51,0x0b,0xa9,0xba,0xbe,0xbb,0xbe,0xfd,0x00,0x15,0x47,0xa8,0x10,0xe6,0x71,0x49,0xca,0xee,0x11,0xd9,0x45,0xcd,0x7f,0xc8,0x1a,0x05,0xe9,0xf8,0x5a,0xac,0x65,0x0e,0x90,0x52,0xba,0x6a,0x8c,0xd8,0x25,0x7b,0xf1,0x4d,0x13,0xe6,0xf0,0xa8,0x03,0xb5,0x4f,0xde,0x9e,0x77,0x47,0x2d,0xbf,0xf8,0x9d,0x71,0xb5,0x7b,0xdd,0xef,0x12,0x13,0x36,0xcb,0x85,0xcc,0xb8,0xf3,0x31,0x5f,0x4b,0x52,0xe3,0x01,0xd1,0x6e,0x9f,0x52,0xf9,0x04};

所以基本上当我使用类似

的东西输出它时
for (i=0;i<string_len;i++)
printf("%d \t---\t %x\n",i,cipher_11[i]);

我希望得到相同的值,只是前面没有 0x,它确实适用于大多数这些值,但是其中一些值前面有“ffff”,这会破坏我程序的其余部分:)有点像十六进制操作的新手,所以我很确定我在做一些非常愚蠢的事情。有什么提示吗? (顺便说一句,输出看起来像图片:http://postimg.org/image/k0npwh9a5/)

最佳答案

您的某些字符设置了最高有效位,因此将表示一个负值(假设您的编译器将 char 视为有符号值)。因此,当它被隐式转换为整数时(在调用 printf 期间),它将被解释为负值。所有大于 0x7f 的值都是这种情况。

您应该将 cipher_11 声明为 unsigned char,或者在 printf 期间转换该值:

printf("%d \t---\t %x\n", i, (unsigned char)cipher_11[i]);

关于使用十六进制值创建字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21224052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com