python 数值转BCD,如何拼接二进制字符串
今天工作中遇到python数值转换为BCD编码的问题。公司现有C语言的动态库实现了特定的BCD压缩但是并不通用。如20160701转换成BCD后为020160701F,即...
今天工作中遇到python数值转换为BCD编码的问题。公司现有C语言的动态库实现了特定的BCD压缩但是并不通用。如 20160701转换成BCD后为 02 01 60 70 1F,即前补0后补F多出了一个字节。
由于第三方要求(通用的)是8位的日期转换成的是4个字节的BCD值即,20160102在内存中是长度为4字节的'\x20\x16\x01\x02'。怎么整!怎么整!!!!!
实现方式1(失败求帮助):
Python 有bytes=struct.pack('i',1),bytes实际是字符串,1的16进制表示为'\x01\x00\x00\x00'。基于该功能,想通过类似于操作数组的形式bytes[0]='\x20'
bytes[1]='\x16'......
但是修改bytes[index]里面的值会报错(TypeError: 'str' object does not support item assignment),字节编码值不能进行类似操作。
实现方式2(失败求帮助)
方式2是直接采用字符串与\x拼接。如 '\x' + str。这时报错(ValueError: invalid \x escape)。
将\x中的斜杠转译 \\x倒是可以与字符串拼接。但是却改变了原本的数值。
综上所述:1.如何操作bytes像数组一样。
2.如何拼接字节字符串,即方式2中所希望的拼接方式。
这些都不行,有没有更为精准实际的办法。 展开
由于第三方要求(通用的)是8位的日期转换成的是4个字节的BCD值即,20160102在内存中是长度为4字节的'\x20\x16\x01\x02'。怎么整!怎么整!!!!!
实现方式1(失败求帮助):
Python 有bytes=struct.pack('i',1),bytes实际是字符串,1的16进制表示为'\x01\x00\x00\x00'。基于该功能,想通过类似于操作数组的形式bytes[0]='\x20'
bytes[1]='\x16'......
但是修改bytes[index]里面的值会报错(TypeError: 'str' object does not support item assignment),字节编码值不能进行类似操作。
实现方式2(失败求帮助)
方式2是直接采用字符串与\x拼接。如 '\x' + str。这时报错(ValueError: invalid \x escape)。
将\x中的斜杠转译 \\x倒是可以与字符串拼接。但是却改变了原本的数值。
综上所述:1.如何操作bytes像数组一样。
2.如何拼接字节字符串,即方式2中所希望的拼接方式。
这些都不行,有没有更为精准实际的办法。 展开
2016-07-08
展开全部
举个例子
连接数据库查询表的相关语句:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mytest","sa","123");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from userinfo");
while(rs.next())
连接数据库查询表的相关语句:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mytest","sa","123");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from userinfo");
while(rs.next())
追问
给你个眼神
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询