长到字节数组转换器在C++中不起作用
Long to byte array converter doesn't work in C++
我做了一个应该可以工作的转换器,并且在某些情况下有效,但在这种情况下它不起作用。
问题是,当cout
生成的unsigned char
时,一次一切都是 255,另一次是 0。这段代码有什么问题??
这是我的代码。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void longToBytes(long num, unsigned char arr[4])
{
arr[0]= (int)((num >> 24) & 0xFF);
arr[1]= (int)((num >> 16) & 0xFF);
arr[2]= (int)((num >> 8) & 0xFF);
arr[3]= (int)( num & 0xFF);
}
long bytesToLong(unsigned char arr[4])
{
return ((arr[0] << 24) + (arr[1] << 16) + (arr[2] << 8) + arr[3]);
}
void writelongs(long mas[], int howMany)
{
for(int i=0; i<howMany; i++)
{
unsigned char bytes[4];
cout<<mas[i]<<endl;
longToBytes(mas[i], bytes);
for(int j=0; j<4; j++)
{
cout<<(int)bytes[i]; //Problem here.
}
cout<<endl;
}
}
int main()
{
long aray[2]={-118, 1034};
writelongs(aray,2);
return 0;
}
for(int j=0; j<4; j++)
{
cout<<(int)bytes[i]; // Problem here.
}
您使用了索引 i 而不是 j。
for (int j = 0 ; j < 4 ; j++)
{
cout << (int)bytes[j]; // Problem solved.
}
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么这段代码不起作用,我该如何解决?
- 我正在开发服务器,ip作为参数传递不起作用