大家好,有一个问题请教各位了。客户给了一个CSV文件,文件中存储了很多的16进制数据,例如这样的:
0xFFD8FFE000104A46494600010101006000600000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232这样一段数据代表了一个图片。现在需要根据这个16进制数据转成图片。
我是这样来操作的:
//str代表从CSV文件中读取的一条记录。
string str = "0xFFD8FFE000104A46494600010101006000600000FFDB0043000302020302020303030304030304050805050404050A070706080C0A0C0C0B0A0B0B0D0E12100D0E110E0B0B1016101113141515150C0F17";
char[] chars = str.ToCharArray();
byte[] bytes = new byte[chars.Length];
Encoder e = Encoding.UTF8.GetEncoder();
e.GetBytes(chars, 0, chars.Length, bytes, 0, true); FileStream fs = new FileStream("D:\\pic.png", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Close();这样转出来的图片不行,看不了。
谢谢大家了。图片16进制
0xFFD8FFE000104A46494600010101006000600000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232这样一段数据代表了一个图片。现在需要根据这个16进制数据转成图片。
我是这样来操作的:
//str代表从CSV文件中读取的一条记录。
string str = "0xFFD8FFE000104A46494600010101006000600000FFDB0043000302020302020303030304030304050805050404050A070706080C0A0C0C0B0A0B0B0D0E12100D0E110E0B0B1016101113141515150C0F17";
char[] chars = str.ToCharArray();
byte[] bytes = new byte[chars.Length];
Encoder e = Encoding.UTF8.GetEncoder();
e.GetBytes(chars, 0, chars.Length, bytes, 0, true); FileStream fs = new FileStream("D:\\pic.png", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Close();这样转出来的图片不行,看不了。
谢谢大家了。图片16进制
解决方案 »
- C# web开发 弹出页面 返回参数的问题
- 自定义类消息处理问题
- 在c# winform中如何从textbox读入每一行数据到数组?
- c#调用java带有soapHeader的接口
- 类里面根据某个Field的取值不同而拥有其他不同的属性,怎么实现?
- 创建DataSet问题
- 请问怎么用DB2 控制中心为一个表写入blob类型的数据?
- 查找与VB中相同Combo的属性?
- C#中通过发射获取对象的所有属性出错, 求指导. 标红部分不能正确获取到language里面的属性值
- 获取datagrid的行数
- 字典嵌套字典的用法好吗?
- C# Form中将XML文件绑定到treeview上。。。大神求解啊。。。
{//16进制转图片 FileStream fs = new FileStream("D:\\cc.jpg", FileMode.Create, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
StreamReader sr = new StreamReader("D:\\bb11.txt");
while (sr.Peek() != -1)
{
string tempStr = sr.ReadLine();
byte tempByte = Convert.ToByte(tempStr, 16);
bw.Write(tempByte);
}
fs.Close();
bw.Close();
sr.Close();
} private void button5_Click(object sender, EventArgs e)
{//图片转16进制
FileStream fs = new FileStream("d:\\1.jpg", FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
StreamWriter sw = new StreamWriter("d:\\bb11.txt");
int length = (int)fs.Length;
while (length > 0)
{
byte tempByte = br.ReadByte();
string tempStr = Convert.ToString(tempByte, 16);
// stem = stem + tempStr.ToString();
sw.WriteLine(tempStr);
length--;
}
fs.Close();
br.Close();
sw.Close(); }
这段代码我调试通过了,楼主看看吧,或许对你有用。
应该是楼主的字符串不行,应该用算法来解析,换成16进制,你把pic.png换成pic.txt 你看看,你会发现,写入的就是字符串