社区
C语言
帖子详情
关于数组转换的问题
iceknife
2003-07-22 03:11:44
请问我有一个2维数组char buffer[3][2],我想把它每位转换与之对应的二进制数组即buffer2[3][8],那位大哥能给些提示呀,多谢了
...全文
40
28
打赏
收藏
关于数组转换的问题
请问我有一个2维数组char buffer[3][2],我想把它每位转换与之对应的二进制数组即buffer2[3][8],那位大哥能给些提示呀,多谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cdocument
2003-07-23
打赏
举报
回复
char a[1][1] 的每一个元素都是单个字符,而“4f”已经是字符串了。
iceblade
2003-07-23
打赏
举报
回复
谢谢上面的各位大哥,最后一个问题,如果a[1][1]={'4f'}我怎么能得到b[1][8]=={0,1,0,0,1,1,1,1}马上就散分了,谢谢了
cdocument
2003-07-23
打赏
举报
回复
不敢说成熟高效,只能是实现了功能:请高手指点哈。
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
const row=2;
const lin=2;
char source[16][4]={{'0','0','0','0'},{'0','0','0','1'},{'0','0','1','0'},{'0','0','1','1'},
{'0','1','0','0'},{'0','1','0','1'},{'0','1','1','0'},{'0','1','1','1'},{'1','0','0','0'},
{'1','0','0','1'},{'1','0','1','0'},{'1','0','1','1'},{'1','1','0','0'},{'1','1','0','1'},
{'1','1','1','0'},{'1','1','1','1'}};
int getnum(const char p)
{
char temp=p;
if (isxdigit(temp))
{
temp=toupper(p);
if (temp>='A')
return temp-'A'+10;
else
return temp-'0';
}
return -1;
}
void change(char sour[][lin], char dest[][lin*4])
{
try
{
for (int i=0; i<row; i++)
{
for (int j=0; j<lin; j++)
{
int num=getnum(sour[i][j]);
if (-1==num)
throw 0;
for (int k=0; k<4; k++)
{
dest[i][j*4+k]=source[num][k];
}
}
}
}
catch (...)
{
cout<<"cpp:error: you init the array with the char beyond xdigit"<<endl;
system("pause");
exit(0);
}
}
void main(void)
{
char a[row][lin]={ {'0','0'},{'A','B'}};
char b[row][lin*4];
change(a,b);
for (int i=0; i<row; i++)
{
for (int j=0; j<lin*4; j++)
cout<<setw(4)<<b[i][j];
cout<<endl;
}
system("pause");
}
iceblade
2003-07-23
打赏
举报
回复
to 风之箭,我们必须用turbo c来开发:-(;
forever1314
2003-07-23
打赏
举报
回复
用位运算
一个一个存
iceblade
2003-07-23
打赏
举报
回复
to document,:-)你说得很对,就是你的意思,我说的就是a的数组元素比较大,但是可以分段处理的,每次就是将一个a[3][2]的转换成b[3][18],但是总体上最多可以有上万个a[3][2].所以期待
高效成熟的算法。
zoezinsser
2003-07-23
打赏
举报
回复
学习ing
sailor_Song
2003-07-23
打赏
举报
回复
关注中
冰箭
2003-07-23
打赏
举报
回复
那你用类模板std::bitset吧,虽然不一定高效,但是非常好用的!
std::bitset<size> name(value) // 从无符号长整数数创建一个位集合
std::bitset<size> name(std, pos, n) // 从字符串创建位集合
cdocument
2003-07-23
打赏
举报
回复
我来将你的意思说一下,一直没有说清楚!^_^
将一个数组char a[row][lin] 转换成另外一个数组char b[row][4*lin],数组a中的元素都是十六进制字符,也就是‘0’......'9'....'F',其中字母不分大小写。
举例:
char a[2][2]={{'4','f'},{'a','7'}}转换后的数组是:
char b[2][8]={0 1 0 0 1,1,1,1
1,0,1,0,0,1,1,1}
你所谓的大量数据是否是说a数组的元素庞大?是否如此,请将你的问题说清楚。^_^
fixopen
2003-07-23
打赏
举报
回复
template<unsigned char byte>
class BITS_SET
{
public:
enum bit
{
B0 = (byte & 0x01) ? 1 : 0,
B1 = (byte & 0x02) ? 1 : 0,
B2 = (byte & 0x04) ? 1 : 0,
B3 = (byte & 0x08) ? 1 : 0,
B4 = (byte & 0x10) ? 1 : 0,
B5 = (byte & 0x20) ? 1 : 0,
B6 = (byte & 0x40) ? 1 : 0,
B7 = (byte & 0x80) ? 1 : 0
};
};
int main(void)
{
char buffer[2][3] = {/*any data*/};
char buffer2[2][3][8];
memset(buffer2, 0, sizeof(buffer2)); //clear the buffer2
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
buffer2[i][j][0] = BIT_SET<buffer[i][j]>::B0;
//...
buffer2[i][j][7] = BIT_SET<buffer[i][j]>::B7;
}
}
}
效率够你用的了吧!
cdocument
2003-07-23
打赏
举报
回复
你不是说了是16进制字符吗? 我处理的只有:'0'....'9' 'a'....'f' 'A'....'F' 。其他的字符就被视为不正确,抛出异常退出了。呵呵,我觉得你的问题一直没有描述清楚哦!
a_ray1
2003-07-23
打赏
举报
回复
memcpy(buffer2,buffer1,sizeof(buffer1));
冰箭
2003-07-23
打赏
举报
回复
给字符赋值可以这样 a[1][1]= 0xea 而不是 {'ea'}
iceblade
2003-07-23
打赏
举报
回复
to 热心的document 大哥,如果按你的程序,是不是大于"F"就不能处理了?
iceblade
2003-07-22
打赏
举报
回复
位于运算以后逐个取出我是知道的,我希望一种高效的方法,因为牵扯到大量数据。谢谢了
cloudtarget
2003-07-22
打赏
举报
回复
是不是把每个字符转换为二进制形式存放?
冰箭
2003-07-22
打赏
举报
回复
给你一个提示吧
buf2[0][0] = (buf[0]&0x80)>0?1:0
njuhuangmy
2003-07-22
打赏
举报
回复
hehe
字符 本来 就是 存储 成 整型 的
你 那样做 到底 是 什么 意思 呢 ?
拿 一个 字节 来 放 一个 位 ??
呵呵, 用 位运算符 << >> //呵呵,没用错吧?
你的意思 只要 用 >> 分别 移位 之后,取 最后 一位 ,这个 用 位并 运算
iceblade
2003-07-22
打赏
举报
回复
大虾们快看看呀
加载更多回复(8)
将
数组
转换
为JSON数据
如何将
数组
转换
为JSON数据?下面本篇就来给大家介绍一下将
数组
转换
为JSON对象的方法,希望对大家有所帮助。 方法一:使用Object.assign() Object.assign()方法将枚举的所有属性的值从源对象(一个或多个)复制到目标对象 语法: Object.assign(target, ...sources) 参数: ● target:它指定目标对象。 ● sources:它指定源对象。 例:将JS
数组
转换
为JSON对象 <!DOCTYPE html> .
数组
转换
字符串
数组
转换
字符串
C语言 将字符
数组
转换
为字符串
一般来说,函数返回的类型不能是一个地址,所以说,如果你返回一个地址,编译器会给你警告,但是仍然会正确执行。 但是如果你返回的是一个unsiged char类型的
数组
地址,那么就有可能出现乱码。 如何解决返回unsigned char类型的
数组
地址乱码呢,经过尝试找到一个好方法,就是把这个
数组
转换
为字符串,将这个字符串返回出去就好了。 ok,那么现在的关键是如何将字符
数组
转为字符串。
数组
转换
成List集合
问题
描述:对于给定的如下
数组
,如何
转换
成List集合? String[] array = {"a","b","c"}; 参考stackoverflow总结如下几种写法: 1.使用原生方式,拆分
数组
,添加到List List<String> resultList = new ArrayList<>(array.length); for (String s : ar...
我的C++笔记/C++
数组
转换
字符串的操作
C++
数组
转换
字符串的操作 1.对于char型
数组
转换
为字符串 可以利用如下方法 #include<iostream> using namespace std; int main() { string a;char b[4]={'a','b','c','d'};//string是字符串类型的数据,用b这个字符型
数组
演示 for(int i=0;i<4;i++) { a=a+b[i]; } cout<<a; } 以上可以简单的将一个字符
数组
转换
为一个字.
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章