Buffer.from() 方法将int 转换为 Buffer 类型
时间: 2023-06-18 12:08:06 浏览: 53
不完全正确。Buffer.from() 方法可以将不同类型的数据转换为 Buffer 类型,其中包括字符串、数组、Buffer 实例等。如果要将 int 类型转换为 Buffer 类型,需要先将 int 转换为字节数组,然后再通过 Buffer.from() 方法将字节数组转换为 Buffer 类型。例如:
```
const intNum = 123;
const byteArr = new Uint8Array([intNum]);
const buffer = Buffer.from(byteArr);
```
这样就可以将 int 类型的值 123 转换为 Buffer 类型的 buffer 实例。
相关问题
buffer.writeInt8(array);
实际上,按照 Node.js 的 Buffer 文档,`Buffer.writeInt8()` 方法并不存在传入一个数组的重载。该方法只接受两个参数:要写入的值和写入的起始位置。
如果你想要将一个数组写入 Buffer 中,可以考虑使用 `Buffer.from()` 方法来创建一个新的 Buffer,例如:
```javascript
const array = [1, 2, 3, 4];
const buffer = Buffer.from(array);
```
在上面的代码中,`Buffer.from()` 方法会将数组转换为一个新的 Buffer 对象,其中每个元素都被转换为一个字节。
如果你想要将一个数组中的每个元素都写入到一个已有的 Buffer 中,可以使用循环来逐个写入,例如:
```javascript
const array = [1, 2, 3, 4];
const buffer = Buffer.alloc(array.length);
for (let i = 0; i < array.length; i++) {
buffer.writeInt8(array[i], i);
}
```
在上面的代码中,`Buffer.alloc()` 方法会创建一个指定长度的新的 Buffer 对象,初始值为 0。然后使用循环逐个将数组中的元素写入到 Buffer 中。
/home/topeet/Qt_Project/homework1/widget.cpp:81: error: invalid conversion from 'std::basic_string<char>::size_type {aka unsigned int}' to 'const char*' [-fpermissive] std::string image = ((const unsigned char*)buffer.str().data(), buffer.str().size()); ^
这个错误提示说明在你的代码中,你将一个 `std::string` 类型的变量 `image` 赋值给了一个表达式 `((const unsigned char*)buffer.str().data(), buffer.str().size())`,但是这个表达式的类型是 `unsigned int`,与 `std::string` 类型不匹配,导致编译器报错。
可能是你想要将 `buffer.str()` 转换成 `unsigned char*` 类型,然后存储到 `std::string` 类型的变量 `image` 中。你可以将 `((const unsigned char*)buffer.str().data(), buffer.str().size())` 修改为 `std::string((const char*)buffer.str().data(), buffer.str().size())`,这样就可以将 `buffer.str()` 转换成 `std::string` 类型,然后存储到 `image` 变量中。
修改后的代码如下:
```cpp
std::string image((const char*)buffer.str().data(), buffer.str().size());
```
这样就可以避免这个错误了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)