一个字符串 str,其长度为 len,你想将其拼接成一个长度为 len/2 的 16 进制数组
时间: 2024-02-03 21:11:16 浏览: 26
假设字符串 str 的长度为 len,那么将其拼接成一个长度为 len/2 的 16 进制数组的步骤如下:
1. 首先将字符串 str 转换为字节数组 bytes,可以使用 str.encode() 方法实现。
2. 定义一个空的列表 hex_array,用于存储 16 进制数组。
3. 循环遍历字节数组 bytes,每次取两个字节,将其转换为一个 16 进制数,然后将其添加到 hex_array 中。
4. 返回 hex_array。
下面是一个示例代码:
```python
def str_to_hex_array(str):
bytes = str.encode()
hex_array = []
for i in range(0, len(bytes), 2):
hex_num = int.from_bytes(bytes[i:i+2], byteorder='big')
hex_array.append(hex_num)
return hex_array
```
使用示例:
```python
str = "Hello World"
hex_array = str_to_hex_array(str)
print(hex_array)
```
输出结果:
```
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108]
```
相关问题
C语言将一串字符串拼接为2位16进制数组
假设你有一个字符串 `str`,其长度为 `len`,你想将其拼接成一个长度为 `len/2` 的 16 进制数组 `hex`,可以按照以下步骤进行:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "54686520717569636b2062726f776e20666f78206a756d70"; // 输入的字符串
int len = strlen(str); // 获取字符串长度
if (len % 2 != 0) { // 长度必须为偶数,否则无法拼接为 16 进制数
printf("Invalid length\n");
return 1;
}
int hex_len = len / 2; // 计算拼接后的 16 进制数组长度
unsigned char *hex = (unsigned char *)malloc(hex_len * sizeof(unsigned char)); // 动态分配内存
for (int i = 0; i < hex_len; i++) {
char byte_str[3] = {str[i*2], str[i*2+1], '\0'}; // 获取两个字符组成的字节串
hex[i] = (unsigned char)strtol(byte_str, NULL, 16); // 将字节串转换为 16 进制数
}
for (int i = 0; i < hex_len; i++) { // 输出拼接后的 16 进制数组
printf("%02x", hex[i]);
}
printf("\n");
free(hex); // 释放动态分配的内存
return 0;
}
```
在上述代码中,我们使用了 `strtol` 函数将字节串转换为 16 进制数。同时,我们也需要注意字符串长度必须为偶数,否则无法按照两个字符组成一个字节进行拼接。
C语言将一串字符串拼接为16进制数组
以下是将字符串拼接为16进制数组的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "Hello, world!";
int len = strlen(str);
unsigned char* hex = (unsigned char*)malloc(len * 2 * sizeof(unsigned char));
for (int i = 0; i < len; i++) {
sprintf((char*)(hex + (i * 2)), "%02X", str[i]);
}
for (int i = 0; i < len * 2; i++) {
printf("%c ", *(hex + i));
}
free(hex);
return 0;
}
```
上述代码中,我们首先定义了一个字符串 `str`,然后计算字符串长度并分配了一个大小为 `len * 2` 的 unsigned char 数组 `hex`,用于存储16进制结果。然后,我们使用 `sprintf` 函数将字符转换为16进制形式,并将结果存储在 `hex` 数组中。最后,我们遍历 `hex` 数组并打印出其内容。
注意,此代码示例假设输入的字符串中没有空字符,如果有空字符,则需要相应地调整代码。