func sessionUpload(){
//上传地址
let url = NSURL(string: "http://www.zhekd.com/admin.php/Process/test")
//请求
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
let session = NSURLSession.sharedSession()
//上传数据流
let adImage = qrCodeImage.image
let adImageData = UIImageJPEGRepresentation(adImage!, 0.7)
let data64String = adImageData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions())
let dataImage2 = data64String!.dataUsingEncoding(NSUTF8StringEncoding)
print(dataImage2)
let uploadTask = session.uploadTaskWithRequest(request, fromData: dataImage2) {
(data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
if error != nil{
print("发生了错误===========")
print(error?.code)
print(error?.description)
}else{
let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("上传完毕============")
print(str)
}
}
//使用resume方法启动任务
uploadTask.resume()
}
我上传的代码是这个样子的。这个dataImage2是十六进制的,我要怎么样才能转成二进制的给服务器。
我曾经用先转成十进制,再转成二进制的方法,但是再转成十进制的时候,就报错了,方法如下,错误原因也没有提示,就是直接奔溃了,lldb 那种。
//十六进制 => 十进制
func hex2dec(num:String) -> Int64 {
let str = num.uppercaseString
var sum:Int64 = 0
for i in str.utf8 {
let s = sum*16
let int = Int64(i)
sum = s+int-48
if i >= 65 { // A-Z 从65开始,但有初始值10,所以应该是减去55
sum -= 7
}
}
return sum
}
//十进制转二进制
func dec2bin(var number:Int64) -> String {
var str = ""
while number > 0 {
str = "\(number % 2)" + str
number /= 2
}
print(str)
return str
}
Saya terkejut melihat algoritma penukaran heksadesimal kepada binari ini. Adakah anda mahu menggunakan Int64 untuk menyimpan nilai imej? Bagaimana ia boleh diselamatkan? ?
Tidak kira mengapa terdapat keperluan untuk menukar kepada perenambelasan, ini adalah sesuatu yang anda dan bahagian belakang anda perlu bincangkan... Jika anda benar-benar ingin menukar, anda boleh menyimpannya dengan menukar sedikit demi sedikit... Heksadesimal Satu digit dalam sepadan dengan 4 digit dalam sistem binari Anda sepatutnya mempelajarinya di kolej... 0 sepadan dengan 0000, F sepadan dengan 1111...
Adakah anda menguruskan pelayan sendiri? Anda boleh cuba menukarnya kepada base64 dan menghantarnya ke pelayan untuk diproses... Setahu saya, iOS boleh menghantar binari... Tetapi kita perlu menyelaraskan antara kedua-dua pihak